Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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 如何检查sqlite表中是否有满足某些条件的记录_Java_Android_Sqlite - Fatal编程技术网

Java 如何检查sqlite表中是否有满足某些条件的记录

Java 如何检查sqlite表中是否有满足某些条件的记录,java,android,sqlite,Java,Android,Sqlite,我有以下代码 public int getIngCount(String id,String ingrediant) { String countQuery = "SELECT * FROM " + TABLE_CONTACTS2 + " WHERE id = "+id+ " AND ingrediant = "+ingrediant; SQLiteDatabase db = this.getReadableDatabase(); Cursor

我有以下代码

public int getIngCount(String id,String ingrediant) {
        String countQuery = "SELECT  * FROM " + TABLE_CONTACTS2 + " WHERE id = "+id+ " AND ingrediant = "+ingrediant;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);


        // return count
        return cursor.getCount();

    }
但是当没有满足条件的记录时,它会导致异常(没有这样的列),而不是返回0


请帮我找到解决办法。提前感谢。

应将InCredit视为字符串文字,而不是列名等标识符。在SQL中,字符串文字使用单引号。最好使用
占位符来绑定文字值,不过:

String countQuery = "SELECT  * FROM " + TABLE_CONTACTS2 + " WHERE id = "+id+ " AND ingrediant = ?";
Cursor cursor = db.rawQuery(countQuery, new String[] { ingrediant });

另外,关闭游标方法后不要调用任何游标方法。

请添加stacktrace。异常是什么?显示sqlite异常:没有这样的列@FildorIts会在关闭游标方法后调用导致异常。但是,是的,永远不要对参数使用连接,始终使用绑定变量,否则会有SQL注入安全漏洞。