从Java更新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

我正在尝试从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是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();
 }