私のエラーの解決策を見つけるためにここで検索しましたが、誰も私の問題に一致しません。だから誰でも私のコードでエラーを見つけるのを助けます!?エラー:パラメータインデックスが範囲外です(2>パラメータ数1)
textField_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
Object selected = list_1.getSelectedValue();
Connection conn = null;
conn=DriverManager.getConnection("jdbc:mysql://localhost/flyer","root","000");
Statement st= conn.createStatement();
String query = "INSERT INTO flyer_item (discount) SELECT price*? FROM `item` where item_name='?' ";
// PreparedStatement ps = null;
int i = Integer.valueOf((textField_1.getText()));
i=i/100;
java.sql.PreparedStatement ps = conn.prepareStatement(query);
ps.setInt(1,i);
ps.setString(2, selected.toString());
ps.executeUpdate();
st.executeUpdate(query);
} catch (SQLException se){
System.out.println(se.getMessage());
}
} });
注:mysql文は、ワークベンチで正常に実行されています。これに
where item_name='?'
: あなたが
どうもありがとう、私はそれを試してみましたが、エラーがありました:{あなたはあなたのSQL構文でエラーが発生しています。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文が近くで使えるようにしてください。 FROM item item_name =? '行1} – sara
エラーは** 'st.executeUpdate(query); **から来ているようです。**あなたはその行を望んでいません。それを取り除く。コードは* prepared statement *(** 'ps' **)を使用しています。 ** st **を定義する必要はありません。 ** 'Statement st =' ** '行も削除してください。 – spencer7593
本当にありがとうございました。それでも私のテーブルではクエリは何もしません。とにかく助けてくれてありがとう。 – sara