非计算机专业,没学过数据库,最近要用到的时候腿短了。。
看了好多人家的代码,自己写出来返回异常:
android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
然后我就百度,相关的帖子一个个看,又差了文档,总结下来问题在于:主键不为一或一数据为空
所以觉得是这两处可能有问题,求指个方向
public void onCreate(SQLiteDatabase db) { db.execSQL("create table notes ("+KEY_ROWID+
"INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_TEXT+" TEXT NOT NULL);"); }
//此处创建table的命令是否是对的? public long createNote(String title) {
ContentValues values = new ContentValues();
values.put(KEY_TITLE, title);
Log.e("values", values.toString());//此处返回值正常 是参数title
long rowId = db.insert(TBL_NAME, null, values);
// An exception that indicates that an integrity constraint was
// violated.
Log.e("rowid", String.valueOf(rowId));//此处返回值 为 -1
return rowId;
}SQLite数据库异常

解决方案 »

  1.   

    創建表的時候缺少空格 "INTEGER PRIMARY KEY AUTOINCREMENT, "
     |
    添加空格
      

  2.   

    请问哪里加空格? 是这样?
    db.execSQL("create table notes ("+KEY_ROWID+
    "INTEGER PRIMARY KEY AUTOINCREMENT,  "
    + KEY_TEXT+" TEXT NOT NULL);");
    试了一下还是不对呀
      

  3.   

    db.execSQL("create table notes (" + KEY_ROWID +
    " INTEGER PRIMARY KEY AUTOINCREMENT,  "
    + KEY_TEXT +" TEXT NOT NULL);");试试!
      

  4.   

    我画的不清楚吗,INTEGER的第一个字母前面加个空格
      

  5.   

    不对奥~。~ 还是一样的异常 弱弱的问下,这和我原来的有区别么
    "     这里要有空格        INTEGER PRIMARY KEY AUTOINCREMENT,  "
    +     这里要有空格        KEY_TEXT +" TEXT NOT NULL);");
      

  6.   

    不对奥~。~ 还是一样的异常 弱弱的问下,这和我原来的有区别么
    "     这里要有空格        INTEGER PRIMARY KEY AUTOINCREMENT,  "
    +     这里要有空格        KEY_TEXT +" TEXT NOT NULL);");db.execSQL("create table notes (" 
    + KEY_ROWID +
    "     这里要有空格        INTEGER PRIMARY KEY AUTOINCREMENT,"
    + KEY_TEXT +
    "     这里要有空格        TEXT NOT NULL);");