【问题标题】:insert into from one table to another with select (android sqlite)使用选择从一个表插入到另一个表(android sqlite)
【发布时间】:2016-04-20 19:40:14
【问题描述】:

我有两张表的列完全相同,只是第二张表有一些额外的列。

我想将除 _id 列之外的所有数据从第一个表复制到第二个。两个表中的列名完全相同。

这是第一张桌子

private static final String TABLE_EXPENSES_CREATE = "create table " + TABLE_EXPENSES + " (" +
      COLUMN_ID + " integer primary key autoincrement, " +
      COLUMN_DATE + " integer not null, " +
      COLUMN_AMOUNT + " real not null, " +
      COLUMN_DESCRIPTION + " text, " +
      COLUMN_REPEAT_ID + " integer," +
      " FOREIGN KEY (" + COLUMN_REPEAT_ID + ") REFERENCES " +
      TABLE_REPEAT_METADATA + "(" + COLUMN_ID + ")" +
      ");";

第二个

 private static final String TABLE_TRANSACTIONS_CREATE =
      "create table " + TABLE_TRANSACTIONS + " (" +
          COLUMN_ID + " integer primary key autoincrement, " +
          COLUMN_DATE + " integer not null, " +
          COLUMN_AMOUNT + " real not null, " +
          COLUMN_DESCRIPTION + " text, " +
          COLUMN_TYPE + " text not null, " +
          COLUMN_REPEAT_ID + " integer," +
          " FOREIGN KEY (" + COLUMN_REPEAT_ID + ") REFERENCES " +
          TABLE_REPEAT_METADATA + "(" + COLUMN_ID + ")" +
          ");";

我正在尝试使用以下代码将所有内容从第一个表(COLUMN_ID 除外)复制到第二个:

db.rawQuery("insert into "
          + MySQLiteHelper.TABLE_TRANSACTIONS
          + " ("
          + COLUMN_DATE
          + ", "
          + COLUMN_AMOUNT
          + ", "
          + COLUMN_DESCRIPTION
          + ", "
          + COLUMN_REPEAT_ID
          + ") select "
          + COLUMN_DATE
          + ", "
          + COLUMN_AMOUNT
          + ", "
          + COLUMN_DESCRIPTION
          + ", "
          + COLUMN_REPEAT_ID
          + " from "
          + MySQLiteHelper.TABLE_EXPENSES, null);

但是,一旦代码运行,就没有效果了。日志不显示任何错误。我究竟做错了什么?

【问题讨论】:

    标签: android mysql sqlite


    【解决方案1】:

    当您假设要返回一些数据(在Cursor)时,您应该使用rawQuery
    出于其他目的考虑使用execSQL

    在您的情况下,如果您将 db.rawQuery("insert into "... 替换为 db.execSQL("insert into " ... 它将起作用!


    P.S. 对于rawQuery,您还可以阅读一篇有趣的文章:
    "SQL 字符串不能被 ; 终止"。
    几天前我很头疼;)

    【讨论】:

    • 修复了它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多