我正在尝试从javafx更新sqlite数据库。我对我的数据库执行以下查询以更新它:
try
{
int saveSpeed = gui.saveSpeedInt - gui.saveSpeedTimer;
String query2;
if(gui.textAnswerQ.equals(gui.saveAnswer.getText()) || gui.textAnswerToFQ.equals(gui.saveAnswer.getText()) || gui.SanswerTextField.getText().equals(gui.saveAnswer.getText())){
String answer = "1";
query2 = "update StudentsQuestions set Time = '"+saveSpeed+"' set Answer = '"+answer+"' where UserName = '"+gui.saveUser.getText()+"' and Question = '"+gui.question.getText()+"'";
}
else{
String answer = "0";
query2 = "update StudentsQuestions set Time = '"+saveSpeed+"' set Answer = '"+answer+"' where UserName = '"+gui.saveUser.getText()+"' and Question = '"+gui.question.getText()+"'";
}
PreparedStatement pst2 = gui.connectionUsers.prepareStatement(query2);
pst2.execute();
pst2.close();
}
当我一直执行更新时,“应答”字段似乎为空。我在这里做错了吗? Aswer是StudentsQuestions表中的一个字段,其类型为INTEGER,其模式为“Answer INTEGER”。
编辑:确实,我发现我无法在同一个查询中放置两个集合。但是我不知道如何将我的查询分成准备好的语句。有帮助吗?
答案 0 :(得分:2)
创建预准备语句是可行的方法。我会修复你的代码(主要错误是没有逗号并在sql语句中使用set两次):
try
{
int saveSpeed = gui.saveSpeedInt - gui.saveSpeedTimer;
String query2;
int answer = 1;
if(gui.textAnswerQ.equals(gui.saveAnswer.getText()) || gui.textAnswerToFQ.equals(gui.saveAnswer.getText()) || gui.SanswerTextField.getText().equals(gui.saveAnswer.getText())){
answer = 1;
}
else{
answer = 0;
}
query2 = "update StudentsQuestions set Time = ?, Answer = ? where UserName = ? and Question = ?";
PreparedStatement pst2 = gui.connectionUsers.prepareStatement(query2);
pst2.setInt(1, saveSpeed);
pst2.setInt(2, answer);
pst2.setString(3, gui.saveUser.getText());
pst2.setString(4, gui.question.getText());
pst2.execute();
pst2.close();
}
有关详细信息,请参阅:Using SQLite Prepared statements basics