android.database.sqlite.SQLiteException: no such column
Caused by: android.database.sqlite.SQLiteException: no such column: Ivan (code 1 SQLITE_ERROR): , while compiling: insert into Users (FirstName) values (Ivan)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:903)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:514)
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.executeSql(SQLiteDatabase.java:1769)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1698)
at com.example.blagodari.Models.DBhelper.addUser(DBhelper.java:93)
at com.example.blagodari.MainActivity.Tap1(MainActivity.java:46)
Пишет, что ошибки в DBhelper.java:93 и MainActivity.java:46
DBhelper.java:93:
database.execSQL(sql);
MainActivity.java:46
db.addUser(user);
Я подозреваю, что я что-то сделал не так при создании таблицы бд. Вот мой код:
String user_sql = "Create table " + TABLE_USERS + " ( " + KEY_ID_USERS + " integer primary key, " + USER_NAME +
" nvarchar(128), " + USER_SURNAME + " nvarchar(128), " + USER_PASSWORD + " varchar(50), " +
USER_EMAIL + " varchar(128), " + USER_ACCOUNT_DATE_CREATED + " integer)";
db.execSQL(user_sql);
Вот моя функция, отвечающая за добавление пользователя в таблицу Users:
public void addUser(User user){
SQLiteDatabase database=getWritableDatabase();
String name=user.getFirstName();
String surname=user.getSurname();
String passwd=user.getPassword();
String email=user.getEmail().toLowerCase();
long date= user.getDate_created();
String sql="insert into "+TABLE_USERS+" ("+USER_NAME+") values ("+name+")";
database.execSQL(sql);
sql="insert into "+TABLE_USERS+" ("+USER_SURNAME+") values ("+surname+")";
database.execSQL(sql);
sql="insert into "+TABLE_USERS+" ("+USER_PASSWORD+") values ("+passwd+")";
database.execSQL(sql);
sql="insert into "+TABLE_USERS+" ("+USER_EMAIL+") values ("+email+")";
database.execSQL(sql);
sql="insert into "+TABLE_USERS+" ("+USER_ACCOUNT_DATE_CREATED+") values ("+date+")";
database.execSQL(sql);
}
Сначала вставлял все одним запросом, потом в надежде решил разделить, но увы...
Ответы (1 шт):
Автор решения: dmtr
→ Ссылка
Обратите внимание на
no such column: Ivan (code 1 SQLITE_ERROR): , while compiling: insert into Users (FirstName) values (Ivan)
Все, что включается в values должно идти в одинарных кавычках, приведите ваш код к тому, чтобы в итоговом SQL было так:
insert into Users (FirstName) values ('Ivan')
или
insert into Users (FirstName) values ('Ivan','Emelya',...)
для множественной вставки.