0

我正在创建一个简单的表,但在执行该表时会引发如下错误:



    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>

请帮我。

4

3 回答 3

1

好吧,“item”不在 SQLite 的关键字列表中,但那是我之前看到过类似错误的时候......

尝试将您的表名更改为其他名称,看看是否能解决您的问题。

于 2012-10-06T12:42:04.390 回答
1
db.execSQL("CREATE TABLE if not exists item(id INTEGER PRIMARY KEY AUTOINCREMENT,"
            + "item_id TEXT NOT NULL,"
            + "item_name TEXT NOT NULL)");
于 2012-10-06T08:53:51.057 回答
1

也许一些空格问题(在AUTOINCREMENT之前)和语法:

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 关键字和Sqlite中的“INTEGER PRIMARY KEY”不是必需的

于 2013-09-29T17:15:15.293 回答