我正在尝试从数据库中提取联系人。在下面的代码中,当调用rawQuery()
时,我得到错误,说当db
是对象时需要进行对象转换。我对参数rawQuery()
感到困惑。请你能解释一下吗?
String select = "SELECT id, name FROM contacts WHERE email = " + email;
Cursor c = db.rawQuery(select, null);
答案 0 :(得分:0)
String select = "SELECT id, name FROM contacts WHERE email = " + email;
在您的情况下,此代码将无法工作,因为您直接向查询添加参数,需要将它们包装成单引号(否则它将无法工作,SQLite会将值解释为列,并且将抛出异常)。所以你需要把它改成:
String select = "SELECT id, name FROM contacts WHERE email = '" + email + "'";
现在应该可以了。
但我不喜欢你的做法。它不是非常人性化和危险(SQL注入)。我强烈建议您使用更快,更安全,更易读的参数化查询。
示例:强>
String select = "SELECT id, name FROM contacts WHERE email = ?";
String[] whereArgs = {email};
Cursor c = db.rawQuery(select, whereArgs);
希望它有所帮助。
注意:还要确保已正确初始化SQLiteDatabase实例。
答案 1 :(得分:0)
试试这个
Cursor cursor = dh.rawQuery("SELECT _id ,name FROM contacts WHERE email LIKE ? ", new String[] {"%"});