android.database.sqlite.SQLiteException:AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY (code 1)
错误描述android.database.sqlite.SQLiteException: AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY (code 1)

以前没用过SQLite数据库,以致于现在用都是凭感觉来的,就把MySQL中的那一套搬来了,这刚开始就出问题了:
 
@Override
public void onCreate(SQLiteDatabase db) {

    String sql = "CREATE TABLE " + IConst.DB_TABLE_NAME + "("
            + IConst.DB_FIELD_ID + " INTEGER(10) PRIMARY KEY AUTOINCREMENT NOT NULL, "
            + IConst.DB_FIELD_NAME + " VARCHAR(256) NOT NULL DEFAULT '', "
            + IConst.DB_FIELD_CONTENT + " VARCHAR(256) NOT NULL DEFAULT ''"
            + ")";
    db.execSQL(sql);

}

乍一看,没什么问题,一执行,出错了。一看错误提示,说自增只能设置在一个整形主键,但是看一眼代码,我这是整形主键啊,奇怪了……

这个时候抠字眼就对了----> "INTEGER PRIMARY KEY", 没有整形长度的限制。所以这就要注意了,在设置自增主键的时候,不能像常规操作MySQL等数据库那样跟上长度限制,只能放一个独立的“INTEGER”即以上例子中将“(10)”删除。
 
@Override
public void onCreate(SQLiteDatabase db) {

    String sql = "CREATE TABLE " + IConst.DB_TABLE_NAME + "("
            //自增主键设置不能跟随长度限制,只能是一个单独的INTEGER
            + IConst.DB_FIELD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
            + IConst.DB_FIELD_NAME + " VARCHAR(256) NOT NULL DEFAULT '', "
            + IConst.DB_FIELD_CONTENT + " VARCHAR(256) NOT NULL DEFAULT ''"
            + ")";
    db.execSQL(sql);

}

 
It's
欢迎访问本站,欢迎留言、分享、点赞。愿您阅读愉快!
*转载请注明出处,严禁非法转载。
https://www.devsong.org
QQ留言 邮箱留言
头像
引用:
取消回复
提交
涂鸦
涂鸦
热门