Ich habe eine SQLite-Datenbank, die Strings enthält. Ich lese diese Zeichenfolgen von meiner Javafx-Schnittstelle. Alles funktioniert reibungslos, aber mein Problem ist, wenn ich versuche, Strings mit Apostroph zu lesen. Mein Code die Saiten zum Lesen ist die folgende:Sqlite lesen Text mit Apostroph
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();
In dem obigen Code, den ich eine Abfrage peform die Frage Zeichenfolge zurückzukehren und es zu einem Label gui.question hinzuzufügen. Jedoch aufgrund der Apostroph ich folgende Fehlermeldung erhalte (Ich habe den Fehler aufgrund der letzten Zeile):
[sqlite_error] SQL-Fehler oder fehlende Datenbank (in der Nähe „(“: Syntaxfehler)
ich habe versucht, die Lösung from here, aber mein prob noch folgen bleibt Wie kann ich die Sache mit dem Apostroph lösen
EDIT:.? ich Charakter mit doppelseitigem Apostroph zu entkommen versucht Dieser Ansatz funktioniert, aber es ändert sich meine String. um Apostroph zu verdoppeln, was nicht nützlich ist.
Wo bekommen Sie den Fehler, und was sind die Werte hier? –
Ich bearbeite meine Frage, ich erhalte den Fehler in der pst.execute(); – konstantin
Ah - in dem Code, den du vorher noch nicht gepostet hast. Ja, Sie sollten auch parametrisiertes SQL verwenden. * Verwenden Sie immer parametrisiertes SQL, anstatt unbekannte Werte direkt in die SQL-Zeichenfolge einzuschließen. Es ist unklar, warum Sie parametrisierte SQL für die erste Abfrage verwenden würden, aber dann aufhören für die zweite ... –