【问题标题】:android.database.sqlite.SQLiteException: near "Foreign": syntax error (code 1):android.database.sqlite.SQLiteException:在“Foreign”附近:语法错误(代码 1):
【发布时间】:2016-06-18 12:11:24
【问题描述】:

当我想在我的数据库中写入一些值时出现此错误。这是我的错误: Error inserting Foreign=someValue Translation=someValue android.database.sqlite.SQLiteException: near "Foreign": syntax error (code 1): , while compile: 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); //Сохранение данных в таблице.
}

【问题讨论】:

  • 外来关键字可能被保留了..您可以尝试更改此列的名称吗?

标签: android mysql sqlite


【解决方案1】:

FOREIGN 是一个sqlite keyword。重命名该列,或将其引用为例如"FOREIGN".

【讨论】:

    【解决方案2】:

    您不需要在插入查询中放入自动递增行。

    删除它,像这样。

    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); //Сохранение данных в таблице.
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多