如何将包含撇号的字符串传递给android中的查询?

时间:2013-12-20 05:36:53

标签: android

我正在开发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();
    }

请帮我解决这个问题。

2 个答案:

答案 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)

你可以通过以下方式逃避:所以:

"Select desc from List where name ='"+ Daniel O''Neal+ "'"

参考this链接