2017-11-16 26 views
0

jComboBox(変数名 "nama_supplier")にデータベース値を表示しようとしたときに、このエラーを修正するために2日以上前に検索しました。値がJComboBoxが、私は「nama_supplier」のデータが選択されたデータベース内の他の列をキャッチしたいことに登場した後、コードは次のようになります。また、"データベースがロックされています"というエラーが発生しました

private void pilih_supplier(){ 
    java.sql.Connection koneksi = new DBKoneksi().konek(); 

    try { 
       String sqlSupplier = "SELECT * FROM tabel_supplier ORDER BY nama_supplier asc"; 
       PreparedStatement stmt = koneksi.prepareStatement(sqlSupplier); 
       ResultSet rqs=stmt.executeQuery(); 
       while (rqs.next()) { 
        String pat = rqs.getString("nama_supplier"); 
        nama_supplier.addItem(pat); 
        } 
        String select_supplier = (String) nama_supplier.getSelectedItem(); 

        String sqlSelectSupplier = "SELECT * FROM tabel_supplier where nama_supplier = '"+select_supplier+"'"; 
        PreparedStatement stmt1 = koneksi.prepareStatement(sqlSupplier); 
        ResultSet res=stmt1.executeQuery(); 
        while (res.next()) { 
        String add1 = res.getString("kode_barang"); 
        kode_barang.setText(add1); 
        String add2 = res.getString("nama_barang"); 
        nama_barang.setText(add2); 
        String add3 = res.getString("harga"); 
        harga.setText(add3); 
        } 
       //rqs.close(); 
       //res.close();  
       //stmt1.close(); 
       //koneksi.close(); 
     } 

     catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } 

} 

rqs.close(); 
res.close();   
stmt1.close(); 
koneksi.close(); //these 4 codes should remove the error, but it doesn't work 

、私が使用しようとしたその4つのコードようやく中{}の試行後の方法{}が、それは

任意のいずれかを働いていなかった意志はまだこのフィックスコードで、2接続を使用しますが、私は2クラスでそれらを分離しています、この解決策を見つけた

+0

のみ動作します最初の文 – Optional

+0

イエスの接続を閉じた後、第2の文を実行し、それが問題です。私は両方の接続を分ける方法を知らない。別のtry {}でそれらを区切った場合、2番目のエラーは "シンボルを見つけることができません" – Jokurilisme

+1

同じ接続を使用することができます。 https://stackoverflow.com/questions/12634266/can-i-use-same-jdbc-connection-statement-and-resultset-to-execute-two-queries-iここで、最初のクエリからレコードを取得し、閉じる結果セット/ステートメントは同じ接続を使用して別のレコードセットを検索します – Optional

答えて

1

を受け入れ示唆しています。この男へのすべてのクレジットhttp://rahmadfaisal.blogspot.co.id/2015/03/tutorial-menampilkan-isi-database.html

public void tampil() 
{ 
    try { 
    java.sql.Connection koneksi = new DBKoneksi().konek(); 
    Statement stt = koneksi.createStatement(); 
    String sql = "select nama_supplier, kode_barang, nama_barang, harga from tabel_supplier where nama_supplier='"+nama_select_supplier.getSelectedItem()+"'"; 
    ResultSet res = stt.executeQuery(sql); 

    while(res.next()){ 
     Object[] ob = new Object[3]; 
     ob[0]= res.getString(2); 
     ob[1]= res.getString(3); 
     ob[2]= res.getString(4); 

     kode_barang.setText((String) ob[0]); 
     nama_barang.setText((String) ob[1]); 
     harga.setText((String) ob[2]); 
    } 
    res.close(); stt.close(); 

    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    }    
} 

public void tampil_combo() 
{ 
    try { 
    java.sql.Connection koneksi = new DBKoneksi().konek(); 
    Statement stt = koneksi.createStatement(); 
    String sql = "select nama_supplier from tabel_supplier order by nama_supplier asc";  
    ResultSet res = stt.executeQuery(sql);         

    while(res.next()){ 
     Object[] ob = new Object[3]; 
     ob[0] = res.getString(1); 

     nama_select_supplier.addItem((String) ob[0]);          
    } 
    res.close(); stt.close(); 

    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 
} 
関連する問題