私が持っていた以前の質問を参照してください:
Javaフォームを使用したデータベーススクロールボタン-次のメソッドを呼び出してカーソルを上に移動するとエラーが発生しますResultsetオブジェクト
上記の質問に対する回答を参照してください(この質問の下部のパラグラスを参照してください)
私は疑問に思っていました-あなたが言っているとき:'変数を隠す'-これは実際にはどういう意味ですか:プライベート関数として設定されたnetbeansで生成されたコードイベントスタブを参照していますか?もしそうなら、私が試したのですが、Netbeansが私を許可しないので、どのように公開に変更しますか?
これが私のコードです:��
public void DoConnect( ) {
try{
String host = "jdbc:derby://localhost:1527/Employer";
String uName = "admins";
String uPass= "admins";
Connection con = DriverManager.getConnection( host, uName, uPass );
// Statement stmt = con.createStatement( );
stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE );
String SQL = "SELECT * FROM WORKERS";
ResultSet rs = stmt.executeQuery( SQL );
rs.next( );
int id_col = rs.getInt("ID");
String id=Integer.toString(id_col);
String first= rs.getString("First_Name");
String last = rs.getString("Last_Name");
String job = rs.getString("Job_Title");
textID.setText(id);
textFirstName.setText(first);
textLastName.setText(last);
textJobTitle.setText(job);
}
catch ( SQLException err ){
System.out.println( err.getMessage( ) );
}
}
そして、netbeansはイベントコードスタブを生成しました。その中にイベントコードを配置しました:
private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
if ( rs.next( )) {
int id_col = rs.getInt("ID");
String id = Integer.toString(id_col);
String first = rs.getString("First_Name");
String last = rs.getString("Last_Name");
String job = rs.getString("Job_Title");
textID.setText(id);
textFirstName.setText(first);
textLastName.setText(last);
textJobTitle.setText(job);
}
else {
rs.previous( );
JOptionPane.showMessageDialog(Workers.this, "End of File");
}
}
catch (SQLException err) {
JOptionPane.showMessageDialog(Workers.this, err.getMessage());
System.out.println( err.getMessage( ) );
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Workers().setVisible(true);
}
}
}
以前の回答は、次のように言った@UwePlonusから親切に私に与えられました。
「問題は、ResultSetがnullであるということです。
あなたはあなたの変数rsを隠しています。
あなたのコードは(基本的に)次のとおりです。
public class Sample {
ResultSet rs; // is null
public method() {
ResultSet rs = stmt.execute(); // here the other rs is hidden
}
}
コードを機能させたい場合は、変数を非表示にしないでください。また、接続を非表示にしないでください。
答えを早く得るには、コードを減らして例を短くし、実際の問題に集中してください。」
そして私は言った...
「ご回答ありがとうございます。具体的には、rsオブジェクトのnullを解除する方法を教えてください」!
そのことについては、私の変数を再表示します。また、プライベートイベントスタブを公開しますか?
助けてください!