Getting some problems retriving rows of a table using Cursor. I have 3 tables: contacts,match and player (this last comes out from nxn relation). What i want is to retrieve all my match (current user login) giving as input my id. Here are my tables on class DatabaseHelper extends SQLiteOpenHelper:
// Tabella contacts
static final String TABLE_NAME="contacts";
static final String COLUMN_ID="id";
static final String COLUMN_NAME="name";
static final String COLUMN_EMAIL="email";
static final String COLUMN_USERNAME="username";
static final String COLUMN_PASSWORD="password";
//Tabella match
static final String TABLE_MATCH="match";
static final String COLUMN_ID_MATCH="id_match";
static final String COLUMN_NAME_MATCH="name_match";
static final String COLUMN_CONTATTO_MATCH="id_contatto";
static final String COLUMN_MAX_GIOCATORI="max_giocatori";
static final String COLUMN_CITTA="citta";
static final String COLUMN_INDIRIZZO="indirizzo";
static final String COLUMN_DATA="data";
static final String COLUMN_ORA="ora";
static final String COLUMN_LATITUDE="latitude";
static final String COLUMN_LONGITUDE="longitude";
// Tabella Player
static final String TABLE_PLAYER="player";
static final String COLUMN_ID_PLAYER="id_player";
static final String COLUMN_ID_CONTACT_PLAYER="id_contact_player";
static final String COLUMN_ID_MATCH_PLAYER="id_match_player";
...
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);
db.execSQL(TABLE_CREATE_MATCH);
db.execSQL(TABLE_CREATE_PLAYER);
this.db=db;
}
...
public String getContact() {
return contact3;
}
// Here is my function...
public Cursor getMyMatchList3(SQLiteDatabase db){
// db=this.getReadableDatabase();
databaseHolder=new DatabaseHolder();
String contatto=databaseHolder.getContact();
String query="select id_contact_player,id_match_player from "+TABLE_PLAYER;
String query1="select * from "+TABLE_MATCH;
Cursor cursor=db.rawQuery(query,null);
Cursor cursor1=db.rawQuery(query1, null);
String id_contatto_player;
String id_partita;
String nome,citta,indirizzo,data,ora;
if(cursor.moveToFirst()){
do{
id_contatto_player=cursor.getString(0);
if (id_contatto_player.equals(contatto)){
id_partita=cursor.getString(1);
Log.e("ID_MATCH_PLAYER",id_partita);
if (cursor1.moveToFirst()){
do{
if (id_partita.equals(cursor1.getString(0))){
id_partita=cursor1.getString(0);
nome=cursor1.getString(1);
citta=cursor1.getString(4);
indirizzo=cursor1.getString(5);
data=cursor1.getString(6);
ora=cursor1.getString(7);
Log.e("ID_PARTITA_CURSOR_1",id_partita);
Log.e("nome",nome);
Log.e("citta",citta);
Log.e("indirizzo",indirizzo);
Log.e("data",data);
Log.e("ora",ora);
return cursor1;
}
}
while (cursor1.moveToNext());
}
}
}
while (cursor.moveToNext());
}
return cursor1;
}
But in this way cursor1, does not get me back the right rows but same time the Log output are all right. How can i do??
cause if i want back the entire table Match it's easy..
public Cursor getMatch(SQLiteDatabase db){
String query="select * from "+TABLE_MATCH;
Cursor cursor=db.rawQuery(query,null);
return cursor;
}
than on another class i call it such way...
Cursor cursor=databaseHelper.getMatch(db);
String id_partita,nome_partita,citta,indirizzo,data,ora;
while (cursor.moveToNext()){
id_partita=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_ID_MATCH));
nome_partita=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_NAME_MATCH));
citta=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_CITTA));
indirizzo=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_INDIRIZZO));
data=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_DATA));
ora=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_ORA));
match=new Match(id_partita,nome_partita,citta,indirizzo,data,ora);
publishProgress(match);
}