[android-developers] Cursor that will work with query for 2 tables

2010-07-25 Thread Marc
I have a little program that writes to a SQLite database with 4
tables. When I do a query (either with rawQuery or
SQLiteQueryBuilder.query) the cursor only has column's from the first
table. Does anybody know how to do a query on 2 tables that have been
joined on a key value?

some code

public void onCreate(final SQLiteDatabase database) {
String sqlCreate =
CREATE TABLE IF NOT EXISTS Catch (
+ ID integer primary key 
autoincrement,
+ GPSLON  FLOAT, 
+ GPSLAT  FLOAT, 
+ TimeTIMESTAMP, 
+ BaitID  INTEGER, 
+ RigsID  VARCHAR,
+ FishID  VARCHAR,
+ SyncStatus  INTEGER
+ );;
database.execSQL(sqlCreate);

sqlCreate =
CREATE TABLE IF NOT EXISTS bait (
+BaitID integer primary key 
autoincrement,
+SyncStatus  INTEGER,
+BaitNameVARCHAR unique);;
database.execSQL(sqlCreate);

sqlCreate =
CREATE TABLE IF NOT EXISTS rigs (
+RigsID integer primary key 
autoincrement,
+SyncStatus  INTEGER,
+RigsNameVARCHAR);;

database.execSQL(sqlCreate);

sqlCreate =
CREATE TABLE IF NOT EXISTS fishSpecies 
(
+FishID integer primary key 
autoincrement,
+SyncStatus INTEGER,
+FishName   VARCHAR);;
database.execSQL(sqlCreate);
}



private long addBait(final Catch c) {
long id=-1;
Cursor data = db.query(bait,
null,
BaitName = '+c.baitText+',
null,
null,
null,
BaitName DESC);

if (data!=null) {
if (data.moveToFirst()){
id = data.getInt(0);
}
}
data.close();
if (id==-1){
final ContentValues initialValues = new ContentValues();
initialValues.put(BaitName, c.baitText);
initialValues.put(SyncStatus, c.syncStatus);
id = db.insertOrThrow(bait, null, initialValues);
}
return id;
}

public long addCatch(final Catch c) {
long baitId = addBait(c);

final ContentValues initialValues = new ContentValues();
initialValues.put(GPSLON,c.lon);
initialValues.put(GPSLAT, c.lat);
initialValues.put(Time, c.time.toString());
initialValues.put(BaitID, baitId);
initialValues.put(SyncStatus, c.syncStatus);

final long addedRow = db.insertOrThrow(Catch, null,
initialValues);
return addedRow;
}


   public Cursor getAllMyFish() {
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(Catch Bait);
Cursor c = builder.query(db, new String[]{}, null, new 
String[]{},
null, null, null);
return c;
}


It is the cursor that is returned from getAllMyFish() that I want to
have fields from both Catch and Bait but I only get fields from Catch
when I look at the values returned from the cursor's getColumnName()

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


Re: [android-developers] Cursor that will work with query for 2 tables

2010-07-25 Thread Mark Murphy
On Mon, Jul 26, 2010 at 12:03 AM, Marc gobl...@gmail.com wrote:
 I have a little program that writes to a SQLite database with 4
 tables. When I do a query (either with rawQuery or
 SQLiteQueryBuilder.query) the cursor only has column's from the first
 table. Does anybody know how to do a query on 2 tables that have been
 joined on a key value?

Use rawQuery() instead of query().

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

_Android Programming Tutorials_ Version 2.9 Available!

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en