从Java更新sqlite数据库
我正在尝试从javafx更新sqlite数据库。为了更新数据库,我对数据库执行以下查询:从Java更新sqlite数据库,java,sqlite,prepared-statement,Java,Sqlite,Prepared Statement,我正在尝试从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.Sanswe
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是StudentQuestions表中的一个字段,类型为INTEGER,模式为“Answer INTEGER”
编辑:事实上,我发现我不能在同一个查询中放置两个集合。但是,我不知道如何将我的查询分离到一个准备好的语句中。有什么帮助吗 创建准备好的语句是一条路。我会这样修复您的代码(主要错误没有逗号,在sql语句中使用set两次):
有关更多信息,请参见:stacktrace中是否有错误?if语句的前两个条件是same@cricket_007谢谢你的通知。Jibbo不,我没有收到任何信息,我的数据库正常填写,但在字段中回答为NULL!!在任何情况下,您都应该使用PreparedStatement,而不是原始sql查询来阻止sql注入。我对sqlite有点陌生,所以您能告诉我如何创建PreparedStatement吗?
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();
}