Reputation: 341
I would like to insert the Supplier Name, Supplier Contact Number, Supplier Address in a table containing 4 columns for id, name, number, address
unfortunately an exception is thrown during every execution. Tried going through the code, logcat. Still unable to find the problem. Any kind of help would be really appreciated.
Logcat info:
03-08 10:46:07.920 28315-28315/com.example.bharathduraiswamy.comboedittext E/SQLiteDatabase﹕ Error inserting supplier address= supplier name= supplier mobile number=
android.database.sqlite.SQLiteException: near "address": syntax error (code 1): , while compiling: INSERT INTO SUPPLIERLIST(supplier address,supplier name,supplier mobile number) VALUES (?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:886)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:497)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at com.example.bharathduraiswamy.comboedittext.VivzDatabaseAdapter.insertSupplier(VivzDatabaseAdapter.java:92)
at com.example.bharathduraiswamy.comboedittext.AddSupplier.addSupplier(AddSupplier.java:269)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.support.v7.internal.view.SupportMenuInflater$InflatedOnMenuItemClickListener.onMenuItemClick(SupportMenuInflater.java:255)
at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:949)
at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:939)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:596)
at android.support.v7.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:145)
at android.view.View.performClick(View.java:4213)
at android.view.View$PerformClick.run(View.java:17448)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5336)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Helper class code:
public long insertSupplier(String suppName, String suppNumber, String suppAddress) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(VivzHelper.COLUMN_SUPPLIER_NAME, suppName);
contentValues.put(VivzHelper.COLUMN_SUPPLIER_MOBILE_NUMBER, suppNumber);
contentValues.put(VivzHelper.COLUMN_SUPPLIER_ADDRESS, suppAddress);
long supplier_id = db.insert(VivzHelper.TABLE_NAME_SUPPLIER, null, contentValues);
db.close();
return supplier_id;
}
Table data for Supplier List:
private static final String TABLE_NAME_SUPPLIER = "SUPPLIERLIST";
private static final String COLUMN_SUPPLIER_UID = "supplier_id";
private static final String COLUMN_SUPPLIER_NAME = "supplier name";
private static final String COLUMN_SUPPLIER_MOBILE_NUMBER = "supplier mobile number";
private static final String COLUMN_SUPPLIER_ADDRESS = "supplier address";
private static final String CREATE_TABLE_SUPPLIER =
"CREATE TABLE " + TABLE_NAME_SUPPLIER + "( " + COLUMN_SUPPLIER_UID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
" " + COLUMN_SUPPLIER_NAME + " VARCHAR(255)," +
" " + COLUMN_SUPPLIER_MOBILE_NUMBER + " VARCHAR(255)," +
" " + COLUMN_SUPPLIER_ADDRESS + " VARCHAR(255));";
private static final String DROP_TABLE_SUPPLIER = "DROP TABLE IF EXISTS" + TABLE_NAME_SUPPLIER;
addSupplier method inside MainActivity.java
public void addSupplier(MenuItem item) {
String suppName = supplierName.getText().toString();
String suppNumber = supplierNumber.getText().toString();
String suppAddress = supplierAddress.getText().toString();
long id = vivzHelper.insertSupplier(suppName,suppNumber,suppAddress);
if (id < 0) {
Message.message(this, "Inserting a Row was unsuccessful");
} else {
Message.message(this, "Successfully inserted a Row");
}
//category.setText(""); clears the EditText's existing user fed data
supplierName.setText("");
supplierNumber.setText("");
supplierAddress.setText("");
}
I am making use of menu items in action bar to pass the data from three EditText to SQLite database.
Upvotes: 3
Views: 839
Reputation: 11
i think your variable doesn't define correctly
private static final String TABLE_NAME_SUPPLIER = "SUPPLIERLIST";
private static final String COLUMN_SUPPLIER_UID = "supplier_id";
private static final String COLUMN_SUPPLIER_NAME = "supplier_name";
private static final String COLUMN_SUPPLIER_MOBILE_NUMBER = "supplier_mobile_number";
private static final String COLUMN_SUPPLIER_ADDRESS = "supplier_address";
private static final String CREATE_TABLE_SUPPLIER =
"CREATE TABLE " + TABLE_NAME_SUPPLIER + "( " +COLUMN_SUPPLIER_UID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
" " + COLUMN_SUPPLIER_NAME + " VARCHAR(255)," +
" " + COLUMN_SUPPLIER_MOBILE_NUMBER + " VARCHAR(255)," +
" " + COLUMN_SUPPLIER_ADDRESS + " VARCHAR(255));";
for insert use blew sample code
public void addSupplier (Supplier supplier)
{
//for logging
Log.d("add", supplier.toString());
// 1. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
// 2. create ContentValues to add key "column"/value
ContentValues values = new ContentValues();
values.put(COLUMN_SUPPLIER_NAME, supplier.getSUPPLIER_NAME());
values.put(COLUMN_SUPPLIER_ADDRESS, supplier.getSUPPLIER_ADDRESS());
values.put(COLUMN_SUPPLIER_MOBILE_NUMBER, supplier.getSUPPLIER_MOBILE_NUMBER());
// 3. insert
db.insert(TABLE_NAME_SUPPLIER, // table
null, //nullColumnHack
values); // key/value -> keys = column names/ values = column values
// 4. close
db.close();
}
Upvotes: 0
Reputation: 9477
Just change your column names to this :
private static final String COLUMN_SUPPLIER_NAME = "supplier_name";
private static final String COLUMN_SUPPLIER_MOBILE_NUMBER = "supplier_mobile_number";
private static final String COLUMN_SUPPLIER_ADDRESS = "supplier_address";
you ave used spaces between your column names. That's your problem.
Upvotes: 1