0

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

    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指示该行应该是唯一的(因此,尽管搜索结果,该行已经在数据库中)。

任何想法?

4

2 回答 2

1

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

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

于 2013-07-13T08:53:36.327 回答
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"));
}

希望这可以帮助。

于 2013-07-13T15:43:44.037 回答