【问题标题】:replace Statement to insert into specific columns only替换语句仅插入特定列
【发布时间】:2019-08-31 13:24:03
【问题描述】:

我正在尝试使用替换语句,但仅替换特定列中的数据,但我正在使用的查询正在替换所有列中的值。

public boolean insertDataTable(String FileNumber, String Areas, String Level, String ProjectCode, String Year, String Department, String University, String Address, String City, String State, String Region, String UserId) {

        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();

        String query = " REPLACE INTO DataTable (FileNumber, Areas, Level, ProjectCode, Year, Department, University, Address, City, State, Region, UserId) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";

        sqLiteDatabase.execSQL(query,new String[]{FileNumber, Areas, Level, ProjectCode, Year, Department, University, Address, City, State, Region, UserId});
        sqLiteDatabase.close();
        return true;
    }

我有 13 列的表,我试图不更新最后一列的值。这是我正在使用的代码。

【问题讨论】:

标签: android sqlite replace insert


【解决方案1】:

我认为您误解了REPLACE 声明的目的。
它与UPDATE 不同。
阅读上面的链接,你会看到REPLACE

插入新行或删除与新行冲突的行 然后添加新行。


我相信您真正想要的是更新表中的一行。这样做:

String query = "UPDATE DataTable SET " + 
"FileNumber = ?, Areas = ?, Level = ?, ProjectCode = ?, Year = ?, Department = ?, " +
"University = ?, Address = ?, City = ?, State = ?, Region = ?, UserId = ? " +
"WHERE ......";

在语句末尾使用WHERE子句指定要更新哪一行,否则表的所有行都会被更新。

【讨论】:

  • 谢谢@forpas 我无法做到这一点,因为我在一个空表中插入值,所以我不能使用 where 子句。但我用 INSERT 命令解决了这个问题并指定了列名和值。
  • Rishabh Shukla,这听起来不像这个答案真的解决了你的问题,那么你为什么接受它? (对不起,我不吝惜代表,但似乎 OP 误解了接受的含义。)如果您的解决方案与此明显不同,请考虑自己做出回答。
猜你喜欢
  • 2016-08-02
  • 2013-11-25
  • 2022-10-22
  • 2012-03-19
  • 2014-03-14
  • 1970-01-01
  • 2019-10-04
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多