sqlite выдает исключение при создании таблицы

Я создаю простую таблицу, но при выполнении таблицы выдает такую ​​​​ошибку:



    10-06 09:15:28.606: E/AndroidRuntime(595): 
    android.database.sqlite.SQLiteException: near  "item": error: 
    create table item (_id integer primary key autoincrement,
    item_id text not null,  
    item_name text not null);


Мой класс dbhelper: --

<code>

открытый класс DbHelper расширяет SQLiteOpenHelper {

private static final String CREATE_ITEM_TABLE = String.format("CREATE TABLE %s ( %s INTEGER PRIMARY KEY   AUTOINCREMENT, %s TEXT NOT NULL, %s TEXT NOT NULL);",
                "item","_id", "item_id", "item_name");
private static final String DATABASE_NAME = "applicationdata";
private static final int DATABASE_VERSION = 1;

public DbHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database) {
    database.execSQL(CREATE_ITEM_TABLE);
}

// Method is called during an upgrade of the database,
// e.g. if you increase the database version
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion,
        int newVersion) {
    Log.w(DbHelper.class.getName(), "Upgrading database from version "
            + oldVersion + " to " + newVersion
            + ", which will destroy all old data");
    database.execSQL("DROP TABLE IF EXISTS item");
    onCreate(database);
}

}

</code>

пожалуйста, помогите мне.


person Kailash Dabhi    schedule 06.10.2012    source источник
comment
опубликуйте свой код запроса на создание таблицы.   -  person Hardik Joshi    schedule 06.10.2012
comment
см. этот вопрос: stackoverflow.com /вопросы/12488718/   -  person Sardor Dushamov    schedule 06.10.2012
comment
см. мой ответ, он работает в моем случае..   -  person Hardik Joshi    schedule 06.10.2012


Ответы (3)


Что ж, "item" отсутствует в списке ключевых слов в SQLite, но именно тогда я видел раньше вылезала такая ошибка...

Попробуйте изменить имя таблицы на другое и посмотрите, решит ли это вашу проблему.

person Barak    schedule 06.10.2012

Возможно, проблема с пробелами (перед АВТОИНКРЕМЕНТОМ) и синтаксисом:

private static final String CREATE_ITEM_TABLE = String.format("CREATE TABLE %s ( %s INTEGER PRIMARY KEY AUTOINCREMENT, %s TEXT NOT NULL, %s TEXT NOT NULL);",
            "item","_id", "item_id", "item_name");

или просто:

private static final String CREATE_ITEM_TABLE = String.format("CREATE TABLE %s ( %s INTEGER PRIMARY KEY, %s TEXT NOT NULL, %s TEXT NOT NULL);",
            "item","_id", "item_id", "item_name");

поскольку ключевое слово AUTOINCREMENT не требуется вместе с «INTEGER PRIMARY KEY» в Sqlite

person cdesir    schedule 29.09.2013

person    schedule
comment
Я также пробовал... это не работает... я видел оператор создания при отладке, он идеален, но не могу понять, что происходит - person Kailash Dabhi; 06.10.2012
comment
попробуйте удалить приложение и запустить его снова, если вы создадите уже существующую таблицу (она существует после первого запуска) без if not exists, ваше утверждение не удастся. - person ra.; 07.10.2012
comment
исправлена ​​опечатка в ответе, повторите попытку - person ra.; 07.10.2012
comment
@KailashDabhi теперь какие-то проблемы по этому поводу? если нет, то примите ответ и закройте его. - person Hardik Joshi; 12.10.2012