Я хотел бы вставить Наименование поставщика, поставщик контактный телефон, поставщика Адрес в таблице, содержащей 4 колонки для ид, имя, номер, адресДанные не вставляются в таблицу с использованием SQLite в Android
, к сожалению, исключение составляет бросается во время каждого исполнения. Пробовал пройти код, logcat. Все еще не удается найти проблему. Будем очень благодарны за любую помощь.
Logcat информация:
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 Код класса:
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;
}
Таблица данных для списка поставщика:
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 внутри 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("");
}
Я использую пункты меню в панели действий для передачи данных из трех баз данных EditText в SQLite.
просто наблюдение ... вы передаете 'suppName, suppNumber, suppAddress' в' insertSupplier' в 'MainActivity', но порядок, упомянутый в ошибке для этих столбцов, различается ... – Tirath
Вы использовали пробел между вашими переменными, вы должны удалить все эти пробелы, например, вы должны изменить« адрес поставщика »на' поставщик_адрес' –
Удалить эти пробелы в столбце имена вашей таблицы или использовать двойные кавычки с ними в вашем запросе – Abhi