【问题标题】:Update integer values in SQLite database (java)更新 SQLite 数据库中的整数值(java)
【发布时间】: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


【解决方案1】:

selection 是你在 Sql 查询的 where 子句中放入的条件,而 args 是用 "?" 代替的。选择。

例如:假设您需要 sql 查询 select * from Mytable where ValuesColumn ='1' and Name ='MVB'。所以在这种情况下

字符串选择 = "ValuesColumn = ? AND Name = ?";

String[] args = {"1","MVB"};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多