Sqlite阅读文本与撇号

时间:2016-09-08 08:49:34

标签: java sqlite

我有一个包含字符串的sqlite数据库。我正在从javafx界面读取这些字符串。一切都很顺利,但我的问题是当我尝试用撇号读取字符串时。我读取字符串的代码如下:

String sql = "select * from Questions where Subject = ? and Grade = ? and Level = ?  and questionId = ?";
PreparedStatement pst = gui.connectionQuestions.prepareStatement(sql);
pst.setString(1,gui.textSubjectQTest);
pst.setString(2,gui.showGradeLabel.getText());
pst.setString(3,gui.showCurrentLevelLabel.getText())
pst.setString(4,list.get(counter));
ResultSet rs = pst.executeQuery();
if(rs.next())
{
        String temp = rs.getString("Question");
        gui.question.setText(temp);
        ...
        sql = "Update Questions set Used ='"+1+"' where Question = '"+gui.question.getText().replaceAll("'", "/'")+"'";
        pst = gui.connectionQuestions.prepareStatement(sql);
        pst.execute();  

在上面的代码中,我执行查询以返回问题字符串并将其添加到标签gui.question。但是由于撇号,我收到以下错误(由于最后一行我得到了错误):

  

[SQLITE_ERROR] SQL错误或缺少数据库("(":语法错误)

我尝试按照解决方案from here,但我的问题仍然存在。我怎么能用撇号来解决这个问题呢?

编辑:我试图使用双撇号来逃避角色。这种方法有效,但它将我的字符串更改为双撇号,这是没用的。

1 个答案:

答案 0 :(得分:1)

引号或撇号字符由doubling it转义。

顺便说一下你不需要if (temp.contains("'"))