我从插入数据库调用中收到以下错误。
“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”这一事实有关。
答案 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);