[英]Can't find a record in a SQLiteDatabase
在我的应用程序中,我为数据库创建一个表,如下所示:
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
,该行指示该行应该是唯一的(因此,尽管搜索结果如此,但该行已在数据库中)。
任何想法?
在获取光标的记录计数之前,必须强制Cursor
读取返回的数据(通过调用moveToFirst
或类似方法)。
此外,在使用ContentValues
put
函数时,您不能引用任何值。 数据库中的值现在包含多余的引号。
为什么将查询结果转换为(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"));
}
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.