Android 如何将rawQuery与where子句一起使用?

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

我使用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 * 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
(如果不检查返回值,这是无用的)。