Android sqlite选择错误
我在我的一个方法中得到了这个代码。它应该检查字符串是否已经在数据库中,以及数据库条目是否更新。如果它不在那里,我捕获异常并创建条目Android sqlite选择错误,android,sqlite,Android,Sqlite,我在我的一个方法中得到了这个代码。它应该检查字符串是否已经在数据库中,以及数据库条目是否更新。如果它不在那里,我捕获异常并创建条目 String s="hallo"; try { Cursor c1 = dba.fetchSubject(s); dba.updateSubject(c1.getLong(c1.getColumnIndex(DbAdapter.KEY_ROWID)), s, t, r); } catch (SQLException e){ dba.createS
String s="hallo";
try {
Cursor c1 = dba.fetchSubject(s);
dba.updateSubject(c1.getLong(c1.getColumnIndex(DbAdapter.KEY_ROWID)), s, t, r);
} catch (SQLException e){
dba.createSubject(s, t, r);
}
问题是fetchSubject allway抛出了一个异常
我使用类似的方法通过rowId而不是字符串获取db条目,这是可行的:
public Cursor fetchSubject(long rowId) throws SQLException {
Cursor mCursor = database.query(true, DATABASE_TABLE2, new String[] {
KEY_ROWID, KEY_SUBJECT, KEY_TEACHER, KEY_ROOM}, KEY_ROWID
+ "=" + rowId, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
在顶部调用的方法:
public Cursor fetchSubject(String subject) throws SQLException {
Cursor mCursor = database.query(true, DATABASE_TABLE2, new String[] {
KEY_ROWID, KEY_SUBJECT, KEY_TEACHER, KEY_ROOM}, KEY_SUBJECT
+ "=" + subject, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
错误:
sqlite returned: error code = 1, msg = no such column: hallo
我不知道我的错误在哪里。不能在选择参数处使用字符串吗?尝试在hallo周围添加单引号
String s = "'hallo'";
基本上,您所做的是告诉您的查询:从subject=hallo的表中选择诸如此类的内容。因为hallo没有引号,所以它试图找到一个具有该名称的变量/列。当我们用引号括起来时,我们是在寻找这些引号中的字符串,而不是一个变量
把它想象成普通的编程
String s = hallo;
完全不同于
String s = "hallo";
谢谢,成功了。我还发现了另一个错误。当字符串不在数据库中时,fetchSubject不会引发异常,它会返回一个空游标。