Вы хотите вставить строку из 3 столбцов в таблицу worddictionary
, но вы пытаетесь вставить только 1 строку, объединяя строки word
, wordDefinition
и audioUrl
.
Правильный синтаксис для оператора INSERT
следующий:
INSERT INTO tablename(col1, col2, col3) VALUES (value1, value2, value3)
, и если какое-либо из значений является строкой, оно должно быть заключено в одинарные кавычки .
Итак, чтобы быть синтаксически правильным, вы должны перечислить все имена столбцов после имени таблицы и вставить каждый столбец отдельно:
String insert_query = "INSERT INTO worddictionary (word, wordDefinition, audioUrl) values ('" +
word + "', '" + wordDefinition + "', '" + audioUrl + "')";
db.execSQL(insert_query);
Но рекомендуемый и безопасный способ сделать это - использовать метод insert()
с ContentValues()
, который заботится о кавычках в этих случаях:
ContentValues cv = new ContentValues();
cv.put("word", word);
cv.put("definition", wordDefinition);
cv.put("audiourl", audioUrl);
int result = db.insert("worddictionary", cv);
Вы можете проверить переменную result
после вставки. Если это -1
, то произошла ошибка.