我知道有一条SQL命令是这样的:IF NOT EXISTS
,但是由于Android的SQLiteDatabase
类有一些不错的方法,我想知道是否可以通过方法插入不存在的值。
目前,我正在用它来插入一个String
:
public long insertString(String key, String value) {
ContentValues initialValues = new ContentValues();
initialValues.put(key, value);
return db.insert(DATABASE_TABLE, null, initialValues);
}
(db
是的一个实例SQLiteDatabase
。)
我尝试了该方法,insertOrThrow()
而不是insert()
,但它似乎与相同insert()
。也就是说,如果该值已在行中,则将其再次插入,因此该行现在具有两个具有相同值的值。
SQLiteDatabase:仅在值不存在时插入(不通过原始SQL命令)
由于您不想使用原始查询,因此可以在插入之前实现这一点,只需创建一些函数来测试数据库中是否已存在值。它可以返回boolean(或int),如果返回false,则将执行插入查询。
一个小例子:
public int getCount() {
Cursor c = null;
try {
db = Dbhelper.getReadableDatabase();
String query = "select count(*) from TableName where name = ?";
c = db.rawQuery(query, new String[] {name});
if (c.moveToFirst()) {
return c.getInt(0);
}
return 0;
}
finally {
if (c != null) {
c.close();
}
if (db != null) {
db.close();
}
}
}
if (getCount() == 0) {
//perform inserting
}
如果该值已在行中,则将其再次插入,因此该行现在具有两个具有相同值的值。
这可以通过使用适当的约束来解决,该约束不允许您插入重复项。检查一下:
我有一个我认为是完全琐碎的查询-插入值到一个表中,如果一个值与匹配的ID不存在: 我在where语句周围得到一个错误。为什么?我如何实现我的目标?
问题内容: 我在使用SQL查询时遇到问题。如果同一行尚不存在,我需要插入一行。这是我到目前为止的内容: 我对sql不太熟悉,尤其是不存在的语法,因此在执行时会出现以下错误: ORA-06550:第37行,第11列:PLS-00103:在预期以下情况之一时遇到了符号“ INSERT”: 然后和或 用“ then”符号代替“ INSERT”继续。 following: the following: 问
问题内容: 这个问题已经在这里有了答案 : 检查是否存在一行,否则插入 (11个答案) MySQL条件插入 (12个答案) 6年前关闭。 我想运行一组查询以将一些数据插入SQL表中,但前提是要满足满足某些条件的记录。该表有4个字段:(主要),和 我在查询3个字段:,和。 所以我的查询将是这样的: 因此,我只想在与和匹配的记录尚不存在时插入数据。如果上面的方法是正确的,那么我就觉得这是一种效率很低的
问题内容: 我有以下查询要插入到表中 得到消息 消息4860,级别16,状态1,行1 无法批量加载。文件“ c:\ Type.txt”不存在。 该文件显然在那里。我可能会忽略什么? 问题答案: 看一下: 无法批量加载。文件“ c:\data.txt”不存在 该文件在SQL Server的驱动器上吗? SQL BULK INSERT等始终只能与SQL Server计算机上的本地驱动器一起使用。您的S
我有一个表,有多条记录具有相同的ID但不同的值。我想从其他表复制记录到这个表。如果记录为空,我想更新到最小位置,或者如果值不存在,插入到下一个位置。 这是我的目标表: ID|职位|价值 1 | 1 | A 2 | 1 | B 2 | 2 |空 2 | 3 |空 2 | 4 | C 3 | 1 | A 4 | 1 | D 4 | 2 | B 源表: ID |值 1 | C 2|N 3 | B 4 |
问题内容: 我在控制器的函数中。 因此,从表单中,我得到了一个变量的值,说: 然后,我需要在WHERE语句中嵌入该变量(即它的值)。如果我对值进行硬编码,它将带来正确的结果,但是我已经尝试了各种方法来插入该变量而没有成功。好吧,假设我设法使用了该变量,那么我将不得不研究绑定以避免SQL注入,但是到目前为止,我要说的是,看看该变量是否可以在查询中使用。 我已经试过了,双引号,串联。$ vx。,花括号