2

jTable の値が、jcombobox から選択された最初の値を上書きするのはなぜですか? 誰かがこのコードで私を助けることができます:

private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    Connection con;
    Statement stmt;
    try {
        // TODO add your handling code here
        Class.forName("sun.jdbc.odbc.JdbcOdbc");
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(null, ex);
    }
    try {
        con= DriverManager.getConnection("Jdbc:Odbc:food");
        stmt= con.createStatement();
        int row = 0;

        String st= JcbSub.getSelectedItem().toString();
        jTable3.setValueAt(st, row, 0);    

            row ++;

        } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex);
    } 
}
4

3 に答える 3

1

最後に行番号をインクリメントしますが、値を失い、メソッド呼び出しごとに 0 に初期化されるローカル変数 として宣言しました。したがって、最初の行は毎回上書きされます。

int row = 0; // move this out to a member variable

String st= JcbSub.getSelectedItem().toString();
jTable3.setValueAt(st, row, 0);    

row ++; // this increment currently has no effect on next method call

また、毎回新しいデータベース接続を開き、 を呼び出して閉じることはありませんcon.close()Statement実際、オブジェクト stmtを介してクエリを実行していないため、メソッド内のすべての JDBC コードは必要ありません。

于 2013-06-05T21:47:11.523 に答える
0

あなたのコードは不完全です。作成されたステートメントを何も使用せず、データセット内を移動するために行がループ内にないためだと思います。

jtable.setValueAt メソッドには、値、列のインデックス、および行のインデックスが必要です。

setValueAt(Object o, int col, int row)

最後のパラメータ jTable3.setValueAt(st, row, 0); にゼロを入れると、最初の行を設定するだけです。

于 2013-06-05T21:46:41.360 に答える