如何将base64编码的数据字符串插入sqlite3表?

时间:2014-10-10 15:29:31

标签: java android sql sqlite base64

我正在写一个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, ?, ?, ?, ?, ?, \"?\");");

但这并没有解决错误。我需要做什么?

1 个答案:

答案 0 :(得分:1)

你有七个参数,但只能绑定六个。

(如果第一列应该是自动增量,请使用NULL而不是$next_id。)