在我的应用程序中,我为我的数据库创建了一个表:
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
,表示该行应该是唯一的(因此,尽管搜索结果,该行已经在数据库中)。
有什么想法吗?
答案 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"));
}
希望这会有所帮助。