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执行唯一插入: