SQLiteException:接近“t”:语法错误(代码1):

时间:2018-04-02 00:42:27

标签: sqlite android-studio

我从插入数据库调用中收到以下错误。

“android.database.sqlite.SQLiteException:near”t“:语法错误(代码1):,编译时:INSERT INTO OCR(bmp,title,description)VALUES('[B @ 9430d52','结果: ',' 和平主义 附魔生物 生物无法攻击或 那 -Qal Sima的肯定

“);

这是我的插入声明

String INSERT_TO_DB = "INSERT INTO " + TABLE_NAME + " ("+
            COLUMN_BITMAP + ", " +
            COLUMN_TITLE + ", " +
            COLUMN_DESCRIPTION +") " +
            "VALUES ('" + getBytes(ocr.getBitmap()) + "', '" + ocr.getTitle() + "', '" + ocr.getDescription() + "');";

    db.execSQL(INSERT_TO_DB);

事情是它正在处理其他图像,我认为它与在尝试插入数据库的描述中有很多“/ n”这一事实有关。

1 个答案:

答案 0 :(得分:0)

永远不要将字符串值直接放入SQL语句中;改为使用参数。

没有必要使用预准备的语句对象来实现此目的:

db.execSQL("INSERT ... VALUES(?, ?, ?)",
           new Object[]{ ocr.getTitle(), ... });

还有一个辅助函数为您构造语句,并正确处理二进制数据:

ContentValues cv = new ContentValues();
cv.put(COLUMN_TITLE, ocr.getTitle());
cv.put(COLUMN_BITMAP, ocr.getBitmap()); // byte array
...
db.insert(TABLE_NAME, null, cv);