うまく動作する非常によく似たコードがいくつかあるので、ここで何かばかげたことをしているに違いありません。以下のコードをコンパイルして実行すると、android.database.sqlite.SQLiteException が発生します。
05-05 20:00:29.524: E/AndroidRuntime(12785): Caused by: android.database.sqlite.SQLiteException: near "VALUES": syntax error: , while compiling: INSERT INTO bookmarks_6616 (VALUES (
それが全体のエラーです。あたかも不完全な挿入物が送信されているかのようです。最も奇妙なことは、 InsertHelper.getColumnIndex() への最初の呼び出しで例外が生成されていることです。これは、とにかく挿入をコンパイルするべきではありません。
コードは以下のとおりです。確認したところ、テーブルは存在します (空で、数行前に作成されています)。キーにも正しい値があります。おそらく、insertHelper を使用せずに insert() を使用するように戻す予定ですが、このバグを解明できるようにしたいと考えています。どんな助けでも大歓迎です。
InsertHelper ihelper = new InsertHelper(dbHelper.mDb, tableName);
//Populate the DB table
final int idColumn = ihelper.getColumnIndex(BooksDbAdapter.KEY_CHID);
final int titleColumn = ihelper.getColumnIndex(BooksDbAdapter.KEY_CHAPTERTITLE);
final int urlColumn = ihelper.getColumnIndex(BooksDbAdapter.KEY_CHAPTERURL);
final int durationColumn = ihelper.getColumnIndex(BooksDbAdapter.KEY_DURATION);
for (RSSMessage msg : messages){
if (msg.imageMessage()) {
dbHelper.updateImage(lvid, msg.getImageURL());
} else {
ihelper.prepareForInsert();
ihelper.bind(idColumn, chid);
ihelper.bind(titleColumn, msg.getChapterTitle());
ihelper.bind(urlColumn, msg.getChapterURL());
ihelper.bind(durationColumn, msg.getDuration());
ihelper.execute();
chid++;
}
}
ihelper.close();