我在特定数据库中有两个sqlite表。我想向两个表添加相同的数据,但在第二个表上我还想在第一个表中存储该条目的ID。
我所做的是将条目('Name','Description')添加到第一个表然后查询以获取'ID2'值然后将条目和ID2号添加到我的第二个表之后(将ID2放入as ID3)。我总是在查询我的最后一个条目的'ID2'列值。
我有这个工作,因为它没有崩溃,并确实为我的第二个表添加了一个值但是它不是添加值,而是某种我不理解的参考,所以无法查找。
我想要一个解决方案来获取我的第一个表的最后一个'ID2'值并将其插入我的第二个表中的'ID3'列中我也想解释为什么我下面的内容是错误的。
请参考我下面的Java代码和我的两个数据库的截图(第二个显示参考代码而不是我想要的值)
非常感谢你。
public boolean insetTheme(String name2,String Description){
SQLiteDatabase Mydb =this.getWritableDatabase();
ContentValues newThingAdd = new ContentValues();
newThingAdd.put(COL2_ALLTHEMES,name2);
newThingAdd.put(COL3_ALLTHEMES,Description);
long result = Mydb.insertOrThrow(TABLE_ALLTHEMES,null,newThingAdd);
Cursor res = Mydb.rawQuery("select * from "+TABLE_ALLTHEMES + " where 'ID2'" ,null);
//res.moveToLast();
if (res != null) {
res.move(-1);
}
ContentValues newThingAdd123 = new ContentValues();
newThingAdd123.put(COL2_CURRENTTHEMES,name2);
newThingAdd123.put(COL3_CURRENTTHEMES,Description);
newThingAdd123.put("ID3",res.toString());
long result2 = Mydb.insertOrThrow(TABLE_CURRENTTHEMES,null,newThingAdd123);
if ((result==-1)&(result2==-1))
return false;
else
return true;
}
答案 0 :(得分:1)
res是Cursor
,因此在其上调用toString()
将无法满足您的需求。
您需要使用res.getString(0)
或类似的方法,根据值的类型(String,int,boolean等)和数字作为列号,例如,如果您想要的值是将在查询中返回的第三列,使用res.getString(2)
来获取值。
如果我这样做了一个查询:
Cursor cursor = Mydb.rawQuery("SELECT * FROM table_1");
和table_1有3列:
id, name, date
如果我想要这个名字,我会用
String name = cursor.getString(1);
希望这就是你所追求的。