2016-04-03 12 views
0
 try 
    { 
     String ptype = null; 
     if(b1.isSelected()) 
     { 
      ptype="cash"; 
     } 
     else if(b2.isSelected()) 
     { 
      ptype="cred"; 
     }  


     String rID=ridt.getText(); 
     String cID=cidt.getText(); 
     double Rcharge=Double.parseDouble(rct.getText()); 
     double Mcharge=Double.parseDouble(mct.getText()); 
     double total=Double.parseDouble(tott.getText()); 
     double sum=Double.parseDouble(casht.getText()); 
     double change=Double.parseDouble(balt.getText()); 


     String sql0 ="INSERT INTO transactions(transaction_id,reservation_id,cus_id,room_charges,meal_charges,total_amount,cash,change,payment_type,emp_id)values('"+?+"','"+rID+"','"+cID+"','"+Rcharge+"','"+Mcharge+"','"+total+"','"+sum+"','"+change+"','"+ ptype+"','e010')"; 
     pst=conn.prepareStatement(sql0); 
     pst.execute(); 

    } 
    catch(NumberFormatException | SQLException e) 
    { 
     System.out.println(e); 
    } 

上記のSQL文transaction_idは、自動増分フィールドです。テーブルにその値を挿入するにはどうすればよいですか?その値をコードに残しておけば、それはデータベースのテーブルに追加されますか?javaからmysqlに自動インクリメント値を挿入する方法

+2

ためにあるべきなクエリを作っ**オート* *は、特定のシナリオで自動的にインクリメントすることを意味します。その場合、カスタムIDを挿入してシナリオに違反しても構わないのはなぜですか? –

+0

[getGeneratedKeys()](http://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#getGeneratedKeys--)を参照してください。 –

答えて

0

auto incrementは、fieldが自動的に増分され、recordsがテーブルに挿入されることを意味します。フィールドtransaction_idにカスタム入力idを入力する場合は、フィールドタイプをint,tinyintなど、値のタイプによって異なります。

0

フィールドがauto_incrementとしてマップされている場合、そのフィールドはクエリに渡されるべきではなく、データベースレベルで発生させます。
preparedStatementも正しく使用してください。
preparedStatementでは、createステートメントを使用したい場合は、動的な値を直接クエリに渡さないでください。
PreparedStatments Plsは変更されたコードを確認し、参照Difference between Statement and PreparedStatement
のためにこれを確認し、セキュリティの面で優れている、私はautogenratedフィールドを削除しても、それはpreparedSatements

 String rID=ridt.getText(); 
     String cID=cidt.getText(); 
     double Rcharge=Double.parseDouble(rct.getText()); 
     double Mcharge=Double.parseDouble(mct.getText()); 
     double total=Double.parseDouble(tott.getText()); 
     double sum=Double.parseDouble(casht.getText()); 
     double change=Double.parseDouble(balt.getText()); 


     String sql0 ="INSERT INTO transactions(reservation_id,cus_id,room_charges,meal_charges,total_amount,cash,change,payment_type,emp_id)values(?,?,?,?,?,?,?,?,?)"; 

     preparedStatement.setString(1, "Test"); 
     preparedStatement.setInt(1, 44); 
     // repeat the above two based on your requirement and datbase field 


     pst=conn.prepareStatement(sql0); 
     pst.execute(); 
関連する問題