Android 如何将rawQuery与where子句一起使用?
我使用rawquery中的WHERE子句从SQLite数据库检索数据,如下所示:Android 如何将rawQuery与where子句一起使用?,android,sqlite,Android,Sqlite,我使用rawquery中的WHERE子句从SQLite数据库检索数据,如下所示: public Cursor Return_SMS(String contact_no) { SQLiteDatabase db=this.getReadableDatabase(); //String[] params=new String[]{contact_no}; Cursor c=db.rawQuery("SELECT
public Cursor Return_SMS(String contact_no)
{
SQLiteDatabase db=this.getReadableDatabase();
//String[] params=new String[]{contact_no};
Cursor c=db.rawQuery("SELECT * FROM "+ "SMS_TABLE_RCV"+" WHERE "+ "Phone_number " + " = " + contact_no,null);
return c;
}
但没有检索到任何数据。我如何获得电话号码等于我从活动中以“联系人号码”形式从游标中传递的值的数据?试试这种方法
Cursor c = db.rawQuery("SELECT * FROM "+SMS_TABLE_RCV+" WHERE Phone_number='" + contact_no + "'",null);
if(c!=null){
c.moveToFirst();
}
使用此行:
Cursor c=db.rawQuery("SELECT * FROM "+SMS_TABLE_RCV+" WHERE "+Phone_number +" ='"+contact_no+"'" ,null);
而不是
Cursor c=db.rawQuery("SELECT * FROM "+ "SMS_TABLE_RCV"+" WHERE "+ "Phone_number " + " = " + contact_no,null);
要在查询中获取参数值,必须使用like
?
:
String[]params=新字符串[]{contact_no};
游标c=db.rawQuery(“从SMS\u表\u RCV中选择*,其中电话号码=?”,
参数);
对于这样一个简单的查询,您不需要使用rawQuery
,只需要使用:
String[]params=新字符串[]{contact_no};
游标c=db.query(“SMS\u TABLE\u RCV”,null,
“电话号码=?”,参数,
空,空,空);
您还必须确保联系人号码是正确的,即是电话号码而不是其他身份证号码,并且该号码存在于数据库中。当
联系人号
包含报价时,此功能将中断。联系人号
包含报价时,此功能将中断;返回的光标永远不能为空;而且这个函数不应该调用moveToFirst
(如果不检查返回值,这是无用的)。