Reputation: 89
I'm having a problem while adding records in SQLite.
This is the Error:
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
My CREATE TABLE
db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" +
KEY_ITEMID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_ITEM + " TEXT NOT NULL, " +
KEY_QTY + " TEXT NOT NULL ");
Whenever I hit the add button, this error is being triggered.
Upvotes: 2
Views: 19186
Reputation: 9590
db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" +
KEY_ITEMID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_ITEM + " TEXT NOT NULL, " +
KEY_QTY + " TEXT NOT NULL )");
You need to add ")" at last in your create table.
Insert Query
String qty = "QTY";
String item = "ITEM";
String sql = "INSERT or replace INTO "+ DATABASE_TABLE +" (qty, item) VALUES('"+ qty +"','"+ item + "')";
db.execSQL(sql);
Upvotes: 0
Reputation: 29672
You are missing the right parenthesis of the Create Table Syntax, correct it as follows,
CREATE TABLE tblItem
(_id INTEGER PRIMARY KEY AUTOINCREMENT,
grocery_item TEXT NOT NULL,
grocery_qty TEXT NOT NULL );
Upvotes: 0
Reputation: 10184
db.execSQL("
CREATE TABLE " + DATABASE_TABLE + "(" +
KEY_ITEMID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_ITEM + " TEXT NOT NULL, " +
KEY_QTY + " TEXT NOT NULL );"
);
There are easy to mix up. You just need the close parenthesis.
Suggestion:
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);
If you construct your table like this, I personally think it makes the statement much easier to read for things like SQL Syntax and then you can bind the data later.
Upvotes: 7
Reputation: 347
error is throw by create table, not get data.
check your create table sql statement
Upvotes: 1