android.database.sqlite.SQLiteException:靠近“”:语法错误
Posted
技术标签:
【中文标题】android.database.sqlite.SQLiteException:靠近“”:语法错误【英文标题】:android.database.sqlite.SQLiteException: near " ": syntax error 【发布时间】:2012-09-19 04:43:36 【问题描述】:我在 SQLite 中添加记录时遇到问题。
这是错误:
09-18 17:47:47.586: E/androidRuntime(1039):
java.lang.RuntimeException: Unable to start activity ComponentInfocom.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 ");
每当我点击添加按钮时,都会触发此错误。
【问题讨论】:
能把代码贴在你创建表格的地方吗? 你在最后错过了 ) 。你也需要包含它 【参考方案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 的列。以上是关于android.database.sqlite.SQLiteException:靠近“”:语法错误的主要内容,如果未能解决你的问题,请参考以下文章