プログラミングに慣れていないため、このエラーを修正する方法がわかりません:java.sql.SQLEception :パラメータインデックスが範囲外です(1>パラメータ数、0)。最初のJFrameが実行され、データベースに接続されているというメッセージが表示されますが、エラーがポップアップし、データベースに何も保存されません。 は、ここに私のコードです:エラー:パラメータインデックスが範囲外です(1>パラメータ数、0)
import java.sql.*;
import javax.swing.*;
public class SaveData extends javax.swing.JFrame {
Connection conn=null;
PreparedStatement pst=null;
ResultSet rs=null;
public SaveData() {
initComponents();
}
private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {
conn=MySQLConnect.ConnectDB();
String Sql="Select * from TripData";
try{
pst=conn.prepareStatement(Sql);
pst.setString(1, txtTripDate.getText());
pst.setString(2, txtStartDest.getText());
pst.setString(3, txtEndDest.getText());
pst.setString(4, txtMileage.getText());
pst.setString(5, txtCost.getText());
if(rs.next()){
JOptionPane.showMessageDialog(null, "Trip Saved");
InfoSaved s=new InfoSaved();
s.setVisible(true);
}
else{
JOptionPane.showMessageDialog(null, "Invalid Information",
"Please enter again", JOptionPane.ERROR_MESSAGE);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, e); }
}
例外は、コマンドラインアプリで問題が再現できることを示しています。つまり、Swingとは何も関係ありません。ヒント:1)無関係のタグを追加しないでください。 2)コマンドラインアプリケーションでSQL部分をデバッグします。最初。 –
データベースに何かを保存したい場合、SELECTステートメントは役に立ちません。 INSERTを試してください。 – Eran
SQLにパラメータマーカー( '?')がないので、 'setString(1、...)'は何をすると思いますか?なぜですか? ---また、 'rs.next()'は 'NullPointerException'で失敗します。 ---最後に、 'SELECT' SQL文は何を信じていますか?なぜですか? *ヒント:*データベースに*保存しません。 – Andreas