Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Android 从数据库中不存在的数组中获取特定值_Android_Sqlite - Fatal编程技术网

Android 从数据库中不存在的数组中获取特定值

Android 从数据库中不存在的数组中获取特定值,android,sqlite,Android,Sqlite,我试图从数据库中不存在的数组中获取值或数据 public Cursor checkExistence(){ Cursor c=null; String[] values={"headache","cold"}; SQLiteDatabase db= getReadableDatabase(); String query="SELECT * FROM "+TABLE_SYMPTOMS+" WHERE "+COLUMN_SYMP+"

我试图从数据库中不存在的数组中获取值或数据

 public  Cursor checkExistence(){
        Cursor c=null;
        String[] values={"headache","cold"};
        SQLiteDatabase db= getReadableDatabase();
        String query="SELECT * FROM "+TABLE_SYMPTOMS+" WHERE "+COLUMN_SYMP+" IN ("+toArrayRep(values)+")";
        c=db.rawQuery(query,null);
        Log.i("From Cursor","Cursor Count : " + c.getCount());
        if(c.getCount()>0){
            String val= c.getString()
            Log.i("From Cursor","No insertion");
        }else{
            Log.i("From Cursor","Insertion");
        }
        db.close();
        return c;
    }



 public static String toArrayRep(String[] in) {
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < in.length; i++) {
        if (i != 0) {
            result.append(",");
        }
        result.append("'" + in[i] + "'");
    }
    return result.toString();
}
public Cursor checkExistence(){
光标c=null;
字符串[]值={“头痛”,“冷”};
SQLiteDatabase db=getReadableDatabase();
String query=“从“+TABLE\u SYMPTOMS+”中选择*,其中“+COLUMN\u SYMP+”位于(“+toArrayRep(values)+”)中”;
c=db.rawQuery(查询,空);
Log.i(“来自游标”,“游标计数:”+c.getCount());
如果(c.getCount()>0){
String val=c.getString()
Log.i(“来自光标”,“无插入”);
}否则{
Log.i(“从游标”、“插入”);
}
db.close();
返回c;
}
公共静态字符串toArrayRep(字符串[]中){
StringBuilder结果=新建StringBuilder();
for(int i=0;i

字符串值={“头痛”,“冷”}
中,头痛存在,但数据库中不存在冷。从上面的代码中,光标返回
Count=1
,即
Count>0
,因此我无法插入到表中。我想知道如何独立检查单个数据是否存在,不存在的数据将插入到表中。因此,在这种情况下,“Cold”可以插入到表中

您需要检查光标。moveToFirst()

  • True=游标中有记录
  • False=没有记录
我的代码示例:

return database.query( table.getNameTable(),
                       table.getColumns(),
                       table.getWhereSelectTableScript(),
                       null,
                       table.getGroupBySelectTableScript(),
                       table.getHavingSelectTableScript(),
                       table.getOrderBySelectTableScript(),
                       table.getLimitRecordsSelectTableScript());

看更多

如果使用单个查询检查所有值,则得到的是现有值的列表,您仍然需要在原始列表中搜索任何差异

单独检查每个值更简单:

String[]值={“头痛”,“冷”};
SQLiteDatabase db=getReadableDatabase();
db.beginTransaction();
试一试{
for(字符串值:值){
long count=DatabaseUtils.queryNumEntries(db,
表_SYMPTOMS,列_SYMP+“=?”,新字符串[]{value});
如果(计数=0){
ContentValues cv=新的ContentValues();
cv.put(柱坐标,值);
db.插入(表_症状,空,cv);
}
}
db.setTransactionSuccessful();
}最后{
db.endTransaction();
}

很抱歉,但这没有帮助,我想用
count=0
获取值,该值显示它不在数据库中的值。感谢您的帮助。对于您的逻辑,
c.getCount()==values.length
->所有记录都以db为单位。如果c.getCount()小于values.length,则某些记录不在db中。但是,如果没有逻辑,您可以使用1个sql执行唯一插入: