没有从sqlite表获取值正确的值或没有正确插入它

时间:2017-11-21 23:11:53

标签: java android sqlite

我在特定数据库中有两个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;
}

First Table

Second Table

1 个答案:

答案 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);

希望这就是你所追求的。