当我想在我的数据库中写一些值时,我收到此错误。这是我的错误: 插入Foreign = someValue Translation = someValue android.database.sqlite.SQLiteException:near“Foreign”:语法错误(代码1):,同时编译:INSERT INTO TableDataBase(Foreign,Translation)VALUES(?,?)
我的DBHelper.java:
public class DBHelper extends SQLiteOpenHelper implements BaseColumns { //Класс для работы с базой данных.
private static final String DATABASE_NAME = "mydatabase";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_TABLE = "TableDataBase";
public static final String FOREIGN_COLUMN = "Foreign";
public static final String TRANSLATION_COLUMN = "Translation";
private static final String DATABASE_CREATE_SCRIPT = "create table " //Скрипт создания база данных.
+ DATABASE_TABLE + " (" + BaseColumns._ID + " integer primary key autoincrement, " + FOREIGN_COLUMN + " text not null, " + TRANSLATION_COLUMN + " text not null);";
DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {//Функция того, что происходит при создании БД.
db.execSQL(DATABASE_CREATE_SCRIPT);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //Функция того, что происходит при обновленнии версии БД.
db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_TABLE); //Удаляем старую таблицу и создаём новую.
onCreate(db); //Создаём новую таблицу.
}
我想插入值:
public void OnClickOk(View view) { //Действия при нажатии на "галочку". ДОРАБОТАТЬ
mDatabaseHelper = new DBHelper(this, "mydatabase", null, 1);
SQLiteDatabase sdb = mDatabaseHelper.getWritableDatabase(); //Создание обьекта баззы данных для записи.
ContentValues newValues = new ContentValues(); //Обьект в который будут записываться данные а потом сохраняться в БД.
newValues.put("Foreign", foreign.getText().toString()); //Сохранение иностранного языка в обьект.
newValues.put("Translation", translation.getText().toString()); //Сохранение перевода слова в обьект.
sdb.insert("TableDataBase", null, newValues); //Сохранение данных в таблице.
}
答案 0 :(得分:2)
FOREIGN
is a sqlite keyword. Either rename the column, or quote it as e.g. "FOREIGN"
.
答案 1 :(得分:0)
您不需要在插入代码中添加自动增量行。
删除它,就像这样。
public void OnClickOk(View view) { //Действия при нажатии на "галочку". ДОРАБОТАТЬ
mDatabaseHelper = new DBHelper(this, "mydatabase", null, 1);
SQLiteDatabase sdb = mDatabaseHelper.getWritableDatabase(); //Создание обьекта баззы данных для записи.
ContentValues newValues = new ContentValues(); //Обьект в который будут записываться данные а потом сохраняться в БД.
newValues.put("Translation", translation.getText().toString()); //Сохранение перевода слова в обьект.
sdb.insert("TableDataBase", null, newValues); //Сохранение данных в таблице.
}