在SQLiteDatabase中找不到记录

时间:2013-07-13 08:36:28

标签: java android sqlite

在我的应用程序中,我为我的数据库创建了一个表:

    String action;

    action= "CREATE TABLE ";
    action+=TABLE_LIEUX;
    action+="(Name TEXT NOT NULL PRIMARY KEY);";
    base.execSQL(action);

然后我在这个表中添加一条记录:

    ContentValues valeur;
    long InsertLine=-10;

    valeur=new ContentValues(1);
    valeur.put("Name","'"+name+"'");
    InsertLine=getWritableDatabase().insert(TABLE_LIEUX,null,valeur);

InsertLine得到的值是1,正如预期的那样。但是当我尝试搜索添加的行时:

            result=(SQLiteCursor)getWritableDatabase().query(TABLE_LIEUX,null,"Name='"+name+"'",null,null,null,null);

我获得的SQLiteCursor结果的长度为-1。当我尝试再次添加行时,我得到一个SQLiteException,表示该行应该是唯一的(因此,尽管搜索结果,该行已经在数据库中)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您必须强制Cursor读取返回的数据(通过调用moveToFirst或类似的东西),然后才能获得光标的记录数。

此外,使用ContentValues put函数时,您不得引用值;数据库中的值现在包含多余的引号。

答案 1 :(得分:0)

为什么要将查询结果转换为(SQLiteCursor)? 查询语句总是返回一个Cursor对象,因此无需使用强制转换。

 Cursor result = getWritableDatabase().
 query(TABLE_LIEUX, null, "Name='"+name+
"'", null, null, null, null);

String mString;

if(result != null && c.moveToFirst()) {
     mString = result.getString(result.
 getColumnIndex("Name"));
}

希望这会有所帮助。