我正在写一个Android应用程序。我有一个base64编码的字符串,我想将它存储在我的sqlite3表中。我正在尝试执行以下操作:
SQLiteDatabase db = new MyDatabase(MyApplication.getContext()).getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("insert into MyTable values($next_id, ?, ?, ?, ?, ?, ?);");
stmt.bindLong(1, id);
stmt.bindString(2, someString);
stmt.bindLong(3, someLong);
stmt.bindLong(4, anotherLong);
stmt.bindLong(5, moreLong);
stmt.bindString(6, base64Data); // the field in question
stmt.execute();
但是我收到了这个错误:
(1299) abort at 19 in [insert into MyTable values($next_id, ?, ?, ?, ?, ?, ?);]: NOT NULL constraint failed: MyTable.base64Data
MyTable.base64Data
架构为:base64Data text NOT NULL
我可以在调试器中看到base64Data不为null,所以我认为我的查询不能正确形成。
我也尝试将最后一个问号放在引号中:
SQLiteStatement stmt = db.compileStatement("insert into MyTable values($next_id, ?, ?, ?, ?, ?, \"?\");");
但这并没有解决错误。我需要做什么?
答案 0 :(得分:1)
你有七个参数,但只能绑定六个。
(如果第一列应该是自动增量,请使用NULL而不是$next_id
。)