非计算机专业,没学过数据库,最近要用到的时候腿短了。。
看了好多人家的代码,自己写出来返回异常:
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数据库异常
看了好多人家的代码,自己写出来返回异常:
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数据库异常
|
添加空格
db.execSQL("create table notes ("+KEY_ROWID+
"INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_TEXT+" TEXT NOT NULL);");
试了一下还是不对呀
" INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_TEXT +" TEXT NOT NULL);");试试!
" 这里要有空格 INTEGER PRIMARY KEY AUTOINCREMENT, "
+ 这里要有空格 KEY_TEXT +" TEXT NOT NULL);");
" 这里要有空格 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);");