0

うまく動作する非常によく似たコードがいくつかあるので、ここで何かばかげたことをしているに違いありません。以下のコードをコンパイルして実行すると、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();
4

1 に答える 1

0

問題は単純に不適切なテーブル名であることが判明しました。どうやら、一致する列が見つからなかったため、エラーは getColumnIndex() にあると表示されました。エラーが不完全な INSERT ステートメントを示した理由はまだわかりませんが、おそらくコンパイラは、結果が必要になるまで getColumnIndex の呼び出しを遅らせました。

于 2012-05-06T12:36:23.807 に答える