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',...)

для множественной вставки.

→ Ссылка