Android InsertHelper getColumnIndex()产生:android.database.sqlite.SQLiteException

时间:2012-05-06 00:20:15

标签: android sqlite bulkinsert

我必须在这里做一些蠢事,因为我有一些非常相似的代码可以正常工作。当我编译并运行下面的代码时,我得到一个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()时会生成异常,无论如何都不应该编译插入。

代码如下。我检查了,表确实存在(它是空的,之前创建了几行。)键也有正确的值。我可能会切换回使用insert()而不使用insertHelper,但我希望能够找出这个bug!任何帮助表示赞赏。

    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();

1 个答案:

答案 0 :(得分:0)

事实证明问题只是一个糟糕的表名。显然,错误显示在getColumnIndex()上,因为找不到匹配的列。我仍然不确定为什么错误显示不完整的INSERT语句,但是编译器可能会将调用延迟到getColumnIndex,直到需要结果为止。