java - 从 Java 更新 sqlite 数据库

标签 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.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”。

编辑: 事实上,我发现我不能将两个集合放入同一个查询中。但是我不知道如何将查询分成准备好的语句。有什么帮助吗?

最佳答案

创建准备好的语句是正确的方法。我会这样修复你的代码(主要错误是没有逗号并在 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

关于java - 从 Java 更新 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38329315/

相关文章:

ios - SQLite 数据库安全 iOS XCode 数据保护 文件保护

python - 如何通过索引将数组元素插入到 SQLite 表中?

Android SQLite select * from table where name like %key% 使用准备好的语句

php - Mysqli 准备语句返回浮点值

java - 有什么有效的方法来确定 boolean 数组中是否有更多 N 个连续 true ? java 语

java - 识别由于夏令时而重复的日期/时间

iphone - 在iPhone的SQLite中插入大量数据

java - 一次性调整窗口(主框架)的水平和垂直大小

java - 我正在尝试为 xlsx 添加 Apache POI,这让我在错误之后出错

当字段有空格时 MySQL 准备好的语句不起作用