从数据库中不存在的数组中获取特定值
Posted
技术标签:
【中文标题】从数据库中不存在的数组中获取特定值【英文标题】:Getting specific value from Array which does not exist in database 【发布时间】:2017-02-13 21:28:38 【问题描述】:我正在尝试从数据库中不存在的数组中获取值或数据。
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();
在String values="headache","cold"
,数据库中存在头痛但不存在感冒。从上面的代码中,光标返回Count=1
,即count>0
,因此我无法插入表中。我想知道如何独立检查单个数据是否存在,不存在的数据将被插入到表中。所以在这种情况下,“冷”将能够被插入到表中。
【问题讨论】:
根据您的逻辑,c.getCount() == values.length
-> 所有记录都在数据库中。如果 c.getCount() 小于 values.length,则某些记录不在 db 中。虽然,没有逻辑,您可以使用 1 sql:***.com/questions/2779823/… 进行唯一插入
【参考方案1】:
如果您使用单个查询来检查所有值,那么您得到的是现有值的列表,您仍然需要在原始列表中搜索任何差异。
单独检查每个值更简单:
String[] values = "headache", "cold" ;
SQLiteDatabase db = getReadableDatabase();
db.beginTransaction();
try
for (String value : values)
long count = DatabaseUtils.queryNumEntries(db,
TABLE_SYMPTOMS, COLUMN_SYMP+" = ?", new String[] value );
if (count == 0)
ContentValues cv = new ContentValues();
cv.put(COLUMN_SYMP, value);
db.insert(TABLE_SYMPTOMS, null, cv);
db.setTransactionSuccessful();
finally
db.endTransaction();
【讨论】:
【参考方案2】:您需要检查 Cursor。moveToFirst()
True = 光标中有记录。 错误 = 没有记录。我的代码示例:
return database.query( table.getNameTable(),
table.getColumns(),
table.getWhereSelectTableScript(),
null,
table.getGroupBySelectTableScript(),
table.getHavingSelectTableScript(),
table.getOrderBySelectTableScript(),
table.getLimitRecordsSelectTableScript());
查看更多here!
【讨论】:
对不起,但这无济于事,我想用count=0
获取值,它显示它不在数据库中的值。不过感谢您的帮助以上是关于从数据库中不存在的数组中获取特定值的主要内容,如果未能解决你的问题,请参考以下文章
当代码从后面执行时,从 javascript 更新的文本框值不存在
如何从 Getnote.vue 中存在的 notes[] 数组中获取 id 并基于该 ID 如何更新特定卡?
pig - 将数据从行转换为列,同时为特定行中不存在的字段插入占位符