【发布时间】:2016-01-19 14:26:16
【问题描述】:
我是 SQLite 数据库的新手,所以请原谅我......
我有一个包含整数值的数据库。使用下面的代码更新数据库中的一行时,有些我不明白。 whereArgs 是 String[] 类型,尽管您要查找的值是整数,所以我希望应该传入 int[]。
SQ.update(table, values, whereClause, whereArgs)
我哪里出错了?
示例代码(假设):
public void changeOneIntoTwo(DatabaseOperations dop) {
SQLiteDatabase SQ = dop.getWritableDatabase();
String selection = "ValuesColumn = ?";
String[] args = {"1"};
ContentValues cv = new ContentValues();
cv.put("ValuesColumn", 2);
SQ.update("MyTable", cv, selection, args);
}
【问题讨论】:
-
看起来它不支持将整数作为参数化参数。这样做应该是安全的
selection = "ValuesColumn = " + Integer.toString(myNumber); -
只需传递字符串数组,sqlite 将“知道”它是否为 int。 stackoverflow.com/questions/17481981/…
-
在 sql 中,字符串 1 和 int 1 都正确地表示为
'1'。所以不用担心,sql引擎会知道什么列期望什么类型。 -
Java 如此精确,让我有点失望的是 sqlite 突然将字符串解释为整数......但无论如何,谢谢!
-
@njzk2 这是错误的;仅当列具有数字 affinity 时,比较才会起作用。
标签: java android sqlite integer