我正在开发Android应用程序。实际上在我的应用程序中,我从先前存储的sqlite数据库中获取数据。但我的一个db列包含带有Apostrophes的字符串。当我传递查询时,当传递带有撇号的字符串时显示错误。
以下是我的代码:
String fest = "Guru Rabindranath's Birthday";
querythefest(fest);
public void querythefest(String festname) {
DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this);
try {
dbAdapter.createDataBase();
} catch (IOException e) {
Log.i("unable to create database", e.getMessage());
}
dbAdapter.openDataBase();
query2 = "Select desc from List where name='"+ festname + "'";
System.out.println("que " + query2);
arr1 = new ArrayList<ArrayList<String>>();
arr1 = dbAdapter.selectRecordsFromDBList(query2, null);
dbAdapter.close();
}
请帮我解决这个问题。
答案 0 :(得分:2)
最简单快捷的方法是用一个额外的叛徒来逃避每一个撇号:
String fest = "Guru Rabindranath''s Birthday";
或者您可以使用rawQuery方法的selectionArgs参数(Sql Injection)
query = "Select desc from List where name = ?";
mDb.rawQuery(query, new String[] { fest });
答案 1 :(得分:1)