Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android.database.sqlite.SQLiteException:没有这样的列_Java_Android_Xml_Sqlite - Fatal编程技术网

Java android.database.sqlite.SQLiteException:没有这样的列

Java android.database.sqlite.SQLiteException:没有这样的列,java,android,xml,sqlite,Java,Android,Xml,Sqlite,当我执行这个查询时,我得到了“android.database.sqlite.SQLiteException:no-this column”错误是什么 public Cursor Getupdate(String rid) throws SQLException { Cursor m1Cursor = db.rawQuery("SELECT _id FROM Meeting where meet="+rid , null); if (m1Cursor !

当我执行这个查询时,我得到了“android.database.sqlite.SQLiteException:no-this column”错误是什么

    public Cursor Getupdate(String rid) throws SQLException 
        {

Cursor m1Cursor = db.rawQuery("SELECT _id FROM  Meeting   where meet="+rid , null);
    if (m1Cursor != null) {           
        if(m1Cursor.getCount() > 0)
        {

             m1Cursor.moveToFirst();
        }
    }
 return m1Cursor;
}
logcat

05-28 01:22:27.999: E/AndroidRuntime(1411): FATAL EXCEPTION: main
05-28 01:22:27.999: E/AndroidRuntime(1411): android.database.sqlite.SQLiteException: no such column: ttyuhomk: , while compiling: SELECT _id FROM  Meeting where meet=rage
在Where子句检查中需要使用撇号(')。。像

db.rawQuery("SELECT _id FROM  Meeting   where meet='"+rid+"'" , null);

或者,更好的方法是使用PreparedStatement并绑定变量。它将为您正确转义字符串和日期。它还可以帮助解决SQL注入问题。

对于字符串数据类型,请始终使用类似以下的引号:“+rid+””,因为rid是字符串,所以会出现错误


只有当rid为int时,才应使用+rid

您也可以这样使用

db.rawQuery("SELECT _id FROM  Meeting   where meet=?" ,
            new String [] {rid});
这也将解决SQL注入问题。

只需使用单引号(
'
) 如果上面的答案仍然不清楚,就用单引号括住where子句

例如:
db.update(TABLE_USER,contentValues,“$KEY_TOKEN='${TOKEN}',null)


注意,
“$token”
中的引号。就是这样!
参数很好,只是没有超负荷的
字符串。valueOf(String)
哦!对不起。实际上,它看起来像是db.rawQuery(“选择_idfrom Meeting where meet=?”,新字符串[]{rid});感谢您对我的代码的指点。回答得很好。只需要解释一下它如何帮助解决SQL注入问题。通过使用参数化查询,它可以安全地抵御SQL注入攻击。例如,在您的代码中,您的查询可能看起来像“SELECT*FROM users WHERE=”“+txtEmail+””和password=”“+txtPassword+”;当用户传递txtPassword的值时,如下所示。(a'或'a'='a)您的查询将类似于从电子邮件地址为的用户处选择*someemail@somedomain.com'和password='a'或'a'='a'将返回整个表,即使密码不正确,用户也可能通过这种注入通过登录。您救了我!亲爱的!!展示得很好。现在,如果rid是一个int数据类型呢?我是否会将其写为“SELECT _idfrom Meeting where meet=“+rid”