Android вставить в базу данных sqlite - PullRequest
2 голосов
/ 11 апреля 2010

Я знаю, что, возможно, я упускаю простую вещь, но я бился головой о стену последние час или два. У меня есть база данных для приложения Android, над которой я сейчас работаю (Android v1.6), и я просто хочу вставить одну запись в таблицу базы данных. Мой код выглядит следующим образом:

//Save information to my table
sql =   "INSERT INTO table1 (field1, field2, field3) " +
        "VALUES (" + field_one + ", " + field_two + ")";
Log.v("Test Saving", sql);
myDataBase.rawQuery(sql, null);

Переменная myDataBase - это объект SQLiteDatabase, который может точно выбирать данные из другой таблицы в схеме. Сохранение работает нормально (без ошибок в LogCat), но когда я копирую базу данных с устройства и открываю ее в браузере sqlite, новая запись не появляется. Я также попытался вручную запустить запрос в браузере sqlite, и это прекрасно работает. Схема таблицы для table1: _id, field1, field2, field3.

Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 4 ]

10 голосов
/ 12 апреля 2010

Ваш запрос недействителен, потому что вы предоставляете 2 значения для 3 столбцов. Ваш необработанный запрос должен выглядеть следующим образом:

sql = "INSERT INTO table1 (field1, field2) " +
    "VALUES (" + field_one + ", " + field_two + ")";

хотя ваша схема содержит три поля. Кстати, вы можете увидеть журнал, чтобы увидеть фактические сообщения об ошибках из sqlite.

6 голосов
/ 20 марта 2012

Правильный ответ дает CommonsWare в комментариях. Вы должны использовать execSql () вместо rawQuery (). И это работает как шарм.

Я подумал, что для других было бы полезно не копаться в комментариях, чтобы найти правильный ответ.

5 голосов
/ 16 февраля 2011

Поскольку это строковые значения, которые вы забыли добавить "'" ... этот запрос, безусловно, будет работать, я проверял

sql = "INSERT INTO table1 (field1, field2) " + 
"VALUES ('" + field_one + "', '" + field_two + "')";
0 голосов
/ 11 апреля 2010

Я изменил свой код, чтобы использовать myDataBase.insert () вместо rawQuery (), и он работает. Я не уверен, почему фактический SQL-запрос не работал, поэтому, если кто-то может пролить свет на это, я все равно буду признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...