2016-07-21 11 views
0

どのように私はmysqlデータベースから入力を差し引くのですか? 私は請求書と在庫システムをやっているとしましょう。したがって、ユーザーがjtextfieldに量を入力すると、テーブルからマイナスになります。 はGUIを添付します。jtextfieldからmysqlデータベースへの入力を差し引くにはどうすればよいですか?

は今、私はこの方法に

public boolean updateBill(Bill bi) { 
    boolean success = false; 
    dbController db = new dbController(); 
    PreparedStatement ps; 

    try { 

     myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ooadp?useSSL=false", "root", "pass"); 

     Statement myStatement = myConn.createStatement(); 

     String sql = "UPDATE medicalproduct SET quantity = quantity - ? WHERE productID = ?, productName = ?, dosage = ?, price = ?, status = ?" ; 

     myStatement.executeUpdate(sql); 



     myConn.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return success; 

} 

を書かれているが、その後、私は私のactionPerformとどのようにSQLクエリに私のJTextFieldをリンクする上で書くことか分かりません。

This is how my gui looks like

+0

これは有効なSQLのWHERE productID =?、productName =?、dose =?、price =?、status =? – Abubakkar

+0

の間ではWHERE句の2つの条件の間にはANDを使用する必要があります。 – Blank

+0

あなたのGUIを見ると、私には明らかなことはいくつかあります。あなたはあなたのメソッド 'updateBill'を呼び出しましたが、なぜそれが医療製品を更新するのでしょうか?確かにあなたはその薬を処方しているすべての患者に影響を与えるので、その薬のことではなくその患者の請求を更新するでしょう。 [PreparedStatement](https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html)に変更してSQLクエリにパラメータを指定することをお勧めします。一度の質問の例が答えられます。 'Bill'クラスの定義を含めることをお勧めします。' bill'テーブルがある場合 –

答えて

0

SQL文はとにかく無効である...しかし、右だ場合、あなたがしたいすべてがJTextFieldの

//For example quantity -= txtfieldValue; 

で指定した値によって、データベースのフィールドから減算されますあなたがしたいことがあれば。フィールドの値を照会し、減算を行い、最後にフィールドを更新することができます。ここでは数量のみを更新するための例です:

public void updateQuantity(String txtFieldValue,String id) throws ClassNotFoundException, SQLException{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     System.out.println("Driver loaded!!!"); 
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ooadp?useSSL=false", "root", "pass"); 
     System.out.println("Connection created!!!"); 

     PreparedStatement pState; 

     String sqlRawP1 ="select quantity from medicalproduct where productID=?";//I guess medicalproduct is your table name 
     pState = conn.prepareStatement(sqlRawP1); 
     pState.setString(1, id); 
     ResultSet rSetQuantity = pState.executeQuery(); 

     int countQuantity = 0; 
     while(rSetQuantity.next()){ 
      countQuantity = rSetQuantity.getInt(1);//Am assumming that quantity is an integer 
     } 

     int value = Interger.parseInt(txtFieldValue); 

     countQuantity-= value; 

     String sqlRawP2 = "update medicalproduct set quantity=? where productID=?"; 
     pState = conn.prepareStatement(sqlRawP2); 
     pState.setInt(1,countQuantity); 
     pState.setString(2, id); 

     pState.executeUpdate(); 

} 

は、私はそれを自分でテストしていないので、軽微なエラーがある場合、それはwell..Forgive私に働くことを願っています。

+0

こんにちは!あなたの助けをありがとうございますが、メソッドを呼び出すために実行されたアクションに何を追加する必要がありますか尋ねますか? –

+0

お願い、今回は何を意味するのか分かりません。それを明確にしてもらえますか?あなたはパラメータか何かを意味しましたか? –

+0

私のGUIの場合、「追加」ボタンをクリックすると、医療製品テーブルからマイナスになります。私はこのメソッドを** public void updateQuantity(String quantity、String id)**と呼んでいます。**ボタンをクリックすると「Add」と表示されます。混乱させて申し訳ありません! –

関連する問題