【问题标题】:android.database.sqlite.SQLiteException: near " ": syntax errorandroid.database.sqlite.SQLiteException:靠近“”:语法错误
【发布时间】:2012-09-19 04:43:36
【问题描述】:

我在 SQLite 中添加记录时遇到问题。

这是错误

09-18 17:47:47.586: E/AndroidRuntime(1039):
   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.capstone.pinoygoodies/com.capstone.pinoygoodies.GroceryView}:
   android.database.sqlite.SQLiteException: near " ":
   syntax error:
   CREATE TABLE tblItem 
                 (_id INTEGER PRIMARY KEY AUTOINCREMENT,
                  grocery_item TEXT NOT NULL,
                  grocery_qty TEXT NOT NULL 

我的创建表

db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" +
KEY_ITEMID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_ITEM + " TEXT NOT NULL, " + 
KEY_QTY + " TEXT NOT NULL ");

每当我点击添加按钮时,都会触发此错误。

【问题讨论】:

  • 能把代码贴在你创建表格的地方吗?
  • 你在最后错过了 ) 。你也需要包含它

标签: android sqlite syntax save


【解决方案1】:
db.execSQL("
    CREATE TABLE " + DATABASE_TABLE + "(" +
    KEY_ITEMID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
    KEY_ITEM + " TEXT NOT NULL, " + 
    KEY_QTY + " TEXT NOT NULL );"
);

有容易混淆的。你只需要右括号。

建议:

String createStatement = 
    String.format("CREATE TABLE %s ( %s INTEGER PRIMARY KEY
                   AUTOINCREMENT, %s TEXT NOT NULL, 
                   %s TEXT NOT NULL);",
                        DATABASE_TABLE,
                        KEY_ITEMID,
                        KEY_ITEM,
                        KEY_QTY);

如果你像这样构造你的表,我个人认为它使语句更容易阅读,比如 SQL 语法,然后你可以稍后绑定数据。

【讨论】:

    【解决方案2】:

    在创建表查询末尾附加“)”。

    【讨论】:

      【解决方案3】:

      创建表时抛出错误,而不是获取数据。

      检查你的创建表 sql 语句

      【讨论】:

        【解决方案4】:

        您缺少创建表语法的右括号,如下更正,

        CREATE TABLE tblItem 
                         (_id INTEGER PRIMARY KEY AUTOINCREMENT,
                          grocery_item TEXT NOT NULL,
                          grocery_qty TEXT NOT NULL ); 
        

        【讨论】:

          【解决方案5】:
          db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" +
          KEY_ITEMID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
          KEY_ITEM + " TEXT NOT NULL, " + 
          KEY_QTY + " TEXT NOT NULL )");
          

          您需要在创建表中最后添加“)”。

          插入查询

              String qty = "QTY";
              String item = "ITEM";
              String sql = "INSERT or replace INTO "+ DATABASE_TABLE +" (qty, item) VALUES('"+ qty +"','"+ item + "')";
              db.execSQL(sql);
          

          【讨论】:

          • 这对我来说很好,但我现在遇到了新问题。 android.database.sqlite.SQLiteException: table tblItem has no column named qty: ,同时编译: INSERT INTO tblItem(qty, item) VALUES(?, ?);我已经声明了 qty 的列。
          猜你喜欢
          • 1970-01-01
          • 2020-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-04
          • 2020-11-29
          相关资源
          最近更新 更多