Dinamik Tabloya Veritabanından Veri Çekme

Veritabanımızda HASTA_BILGILERI isimli tablomuz olsun. Şimdi bu tablodaki verileri  netbeansde oluşturduğumuz dinamik tabloya çekeceğiz. Tablonun boyutu veritabanındaki HASTA_BILGILERI isimli tablonun satır ve sutun sayısına göre değişeceği için tablomuzu kod ile oluşturacağız. Öncelikle basit bir arayüz tasarlayalım. Siz istediğiniz şekilde tasarımı yapabilirsiniz.

Arayuz

 

Burada arama butonuna tıkladığımız anda, küçük bir ekran açılarak veritabanımızda tutulan HASTA_BILGILERI tablomuz gelicek, biz de bu tablodan seçmek istediğimiz veriyi seçip, arayüzde bulunan labellara yazdıracağız.
Öncelikle açılacak küçük ekranı kodlayalalım.

class HASTALIK_BILG_TABLO extends JFrame {
Statement st = null;
public ResultSet r;
public JTable table;
String Data = null;
public HASTALIK_BILG_TABLO() throws SQLException {
if (Baglanti.conn == null) {
Baglanti.dbBaglan();
Statement st = null;
st = Baglanti.conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);//databasede sorgu yapabilmek için ifade oluşturuyor
// ilk parametre gezinme diğeri güncelleme için.
r = st.executeQuery(“SELECT * FROM ORNEK.HASTA_BILGILERI”);
} else {
r = st.executeQuery(“SELECT * FROM ORNEK.HASTA_BILGILERI”);
}
this.setSize(200, 200);
Toolkit tk = this.getToolkit();
Dimension dim = tk.getScreenSize();
int x = (dim.width – 200) / 4;
int y = (dim.height – 200) / 4;
this.setLocation(550, 85);
DefaultTableModel model = createModel(r);
table = createTable(model);
table.setCellSelectionEnabled(true);
ListSelectionModel cellSelectionModel = table.getSelectionModel();
cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
cellSelectionModel.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int[] satir = table.getSelectedRows();
int[] sutun = table.getSelectedColumns();
for (int i = 0; i < satir.length; i++) {
for (int j = 0; j < sutun.length; j++) {
Data = (String) table.getValueAt(satir[i], sutun[j]);
}
}
}
});
JScrollPane jsp = new JScrollPane(table);
this.add(jsp);
}
public DefaultTableModel createModel(ResultSet rest) throws SQLException {
DefaultTableModel dtm = new DefaultTableModel();
ResultSetMetaData rsmd = rest.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
dtm.addColumn(rsmd.getColumnName(i));
}
Vector rows;
while (rest.next()) {
rows = new Vector();
for (int j = 1; j <= rsmd.getColumnCount(); j++) {
rows.addElement(rest.getString(j));
}
dtm.addRow(rows);
}
return dtm;
}
public JTable createTable(DefaultTableModel dm) {
JTable table = new JTable(dm);
return table;
}
}

Artık veritabanımızda tutulan HASTA_BILGILERI isimli tablomuzu netbeans ile dinamik bir şekilde çekebiliyoruz. Şimdi ise arama butonuna tıkladığımız zaman oluşturduğumuz bu Frame’i ekrana çağıralım. Öncelikle Design kısmından arama butonuna  çift tıklıyoruz. Ve butonu tetikleyecek olan eylem(action) metodu açılıyor.  Bu metotda öncelikle HASTALIK_BILG_TABLO sınıfına ait olan bir nesneyi oluşturmamız ve çağırmamız gerekiyor.

final HASTALIK_BILG_TABLO hbt = new HASTALIK_BILG_TABLO();
hbt.setVisible(true);

Artık butona tıkladığımızda , ekrana veri tabanımızdaki tablo geliyor.

tablo

 

Şimdi ise geriye yalnızca, bu tablodan seçilen veriyi label’e yazdırma işlemi kaldı.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

try {
final HASTALIK_BILG_TABLO hbt = new HASTALIK_BILG_TABLO();
hbt.table.setCellSelectionEnabled(true);
ListSelectionModel cellSelectionModel = hbt.table.getSelectionModel();
cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
hbt.setVisible(true);
cellSelectionModel.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
try {
int[] selectedRow = hbt.table.getSelectedRows();
int[] selectedColumns = hbt.table.getSelectedColumns();
for (int i = 0; i < selectedRow.length; i++) {
for (int j = 0; j < selectedColumns.length; j++) {
hbt.Data = (String) hbt.table.getValueAt(selectedRow[i], selectedColumns[j]);
}
}
jLabel2.setText(hbt.Data);
int kod = Integer.parseInt(hbt.Data);
hbt.st = Baglanti.conn.createStatement();
hbt.r = hbt.st.executeQuery(“SELECT HASTALIK_BILGILERI FROM ORNEK.HASTA_BILGILERI where HASTA_KODU='” + kod + “‘”);
while (hbt.r.next()) {
jLabel3.setText(hbt.r.getString(“HASTALIK_BILGILERI”));
}
} catch (SQLException ex) {
Logger.getLogger(HASTALIK_BILGILERI.class.getName()).log(Level.SEVERE, null, ex);
}
}
});

} catch (SQLException ex) {
Logger.getLogger(HASTALIK_BILGILERI.class.getName()).log(Level.SEVERE, null, ex);
}
}

tablo2

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s