我在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 ");
每当我点击添加按钮时,都会触发此错误。
答案 0 :(得分:7)
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语法之类的东西,然后你可以稍后绑定数据。
答案 1 :(得分:3)
在创建表格查询的末尾附加“)”。
答案 2 :(得分:1)
错误是由create table抛出,而不是获取数据。
检查你的create table sql语句
答案 3 :(得分:0)
您缺少Create Table Syntax的右括号,请按以下方式更正
CREATE TABLE tblItem
(_id INTEGER PRIMARY KEY AUTOINCREMENT,
grocery_item TEXT NOT NULL,
grocery_qty TEXT NOT NULL );
答案 4 :(得分:0)
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);