我已经阅读了有关使用Stackoverflow上的SelectArg和ORMLite文档的一些内容,我无法看到我做错了什么。
我在职业表中搜索工作领域="运动员'业务经理"。正如您所看到的,它包含一个单引号,我试图使用SelectArg进行转义。
SelectArg occupationArg = new SelectArg(txtOccupation.getText().toString().trim());
Occupations occupation = CommonUtilities.getHelper(getApplicationContext()).getOccupationsDao().queryBuilder().where().eq(
Occupations.JOB_FIELD, occupationArg).queryForFirst();
上面的代码给出了以下错误:
无法加载驱动程序详细信息:SQL ex:执行Android查询时出现问题:SELECT * FROM occupations
WHERE job
='运动员'业务经理'
答案 0 :(得分:0)
我一直在努力解决类似的问题并最终找到了正确的实施方式:
Dao<Book, Integer> bookDao = getDatabaseHelper(ctx).getBookDao();
UpdateBuilder<Book, Integer> builder = bookDao.updateBuilder();
builder.updateColumnValue("title", book.getTitle());
SelectArg titleArg = new SelectArg();
titleArg.setValue(book.getTitle());
builder.updateColumnValue("title", titleArg);
...
PreparedUpdate<Book> prepare = (PreparedUpdate<Book>) builder.where().idEq(book.getIdField()).prepare();
bookDao.update(prepare);
因此,在您的情况下,通过setValue方法传递值,而不是构造函数:
SelectArg occupationArg = new SelectArg(txtOccupation.getText().toString().trim());