简体   繁体   English

从Java更新sqlite数据库

[英]Updating a sqlite database from Java

I am trying to update a sqlite db from javafx. 我正在尝试从javafx更新sqlite数据库。 I perform the following query to my database in order to update it: 我对数据库执行以下查询以对其进行更新:

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();
 }

When I performed the updating all the time the Answer field seems to be empty. 当我一直执行更新时,答案字段似乎为空。 Am I doing something wrong here? 我在这里做错什么了吗? Aswer is a field from the StudentsQuestions table which type is INTEGER and its schema "Answer INTEGER". “ Aswer”是“ StudentsQuestions”表中的一个字段,类型为INTEGER及其模式“ Answer INTEGER”。

EDIT: Indeed I figure out that I cant put two sets inside the same query. 编辑:确实,我发现我不能在同一查询中放入两个集合。 However I am not aware how can I seperate my query into a prepared statement. 但是,我不知道如何将查询分成准备好的语句。 Any help? 有什么帮助吗?

Creating prepared statements is the way to go. 创建准备好的语句是方法。 I would fix up your code as such (the main error was not having a comma and using set twice in the sql statement): 我会这样修复您的代码(主要错误是没有逗号,并且在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();
 }

for more info see this: Using SQLite Prepared statements basics 有关更多信息,请参见: 使用SQLite Prepared语句基础

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM