2016-07-12 8 views
2

javafxからsqlite dbを更新しようとしています。データベースを更新するために、次のクエリをデータベースに実行します。Javaから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」です。

EDIT:実際、私は同じクエリ内に2つのセットを置くことはできません。しかし、私はどのように私の質問を準備されたステートメントに分けることができるのか分からない。どんな助け?

+0

は、あなたが任意のエラーを取得してくださいstacktrace? – Jibbo

+0

ifステートメントの最初の2つの条件は、通知のために同じ –

+0

@ cricket_007ありがとうございます。 Jibboいいえ、私のデータベースは正常には満たされていますが、フィールドでは何も受け取りません。 – konstantin

答えて

2

準備された文を作成する方法があります。私は(主なエラーがコンマを持っていなかったし、SQL文の中で二度設定を使用)のようなあなたのコードを修正します:

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

関連する問題