İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır

JDBC ve Kullanıcı Arayüzü

JDBC herhangi bir arayüz sisteminden bağımsız çalışacak şekilde hazırlanmıştır. AWT, Swing, Applet,Servlet ve JSP gibi arayüz seçeneklerinden herhangi biriyle, aynı şekilde çalışır. Bazı geliştirme ortamları arayüz ve veritabanı işlevlerini birarada gören bileşenler üretmektedir. Örneğin bir tabloyo veritabından getirip Swing'in JTable'ında gösteren hazır bileşenler bulunmaktadır. Ancak Java'nın standardında böyle bir destek yoktur. Normal şartlar altında programcı bunu kendi yapar. Klasik bir program, arayüzden ilgili verilerin alınıp veritabanına gönderilmesi ve veritabanından gelen bilgilerin arayüzde sergilenmesinden oluşur. Arayüzle veritabanı arasındaki bağlantıyı programcı sağlar.

Swing JTable'la Veri Tabanı Örneği

Java'nın Swing pakedindeki JTable adlı nesne, veritabaından gelen sonuçları listelemek için kullanılabilir. JTable, veriyi TableModel interface'i (daha dourusu onu doğrudan veya dolaylı bir şekilde implement eden herhagi bir class) alır. JDBC'de de sonuçlar ResultSet nesneleri içerisindedir. TableModel'i implement eden ve veriyi ResultSet'ten alan bir class yapılırsa arayüzle veritabanındaki bağlantı sağlanmış olur. Aşağıdaki örnekte ResultSetTableModel diye bir class yazılmıştır. AbsractTableModel'i extend edip ilgili methodları implement eder. Elbette ilgili method'ları implement ederken de ResultSet'i kullanır.

ResultSetTableModel class'ı
ResultSetTableModel.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster

  1 package com.godoro.samples.jdbc;
  2 import java.sql.*;
  3 import java.util.*;
  4 import javax.swing.*;
  5 import javax.swing.table.*;
  6 import javax.swing.event.*;
  7 public class ResultSetTableModel extends AbstractTableModel{
  8     
  9     private ResultSet resultSet;
 10     private int rowCount;
 11     private int columnCount;    
 12     private ArrayList data=new ArrayList();
 13     public ResultSetTableModel(ResultSet resultSet) 
 14         throws Exception
 15     {
 16         setResultSet(resultSet);
 17     }
 18     public void setResultSet(ResultSet resultSet)
 19         throws Exception
 20     {
 21         this.resultSet=resultSet;            
 22         ResultSetMetaData metaData=resultSet.getMetaData();
 23         rowCount=0;
 24         columnCount=metaData.getColumnCount();
 25         while(resultSet.next()){
 26             Object[] row=new Object[columnCount];
 27             for(int j=0;j<columnCount;j++){
 28                 row[j]=resultSet.getObject(j+1);                
 29             }
 30             data.add(row);
 31             rowCount++;
 32         }
 33     }
 34     public int getColumnCount(){
 35         return columnCount;
 36     }        
 37     public int getRowCount(){
 38         return rowCount;
 39     }        
 40     public Object getValueAt(int rowIndex, int columnIndex){
 41         Object[] row=(Object[]) data.get(rowIndex);
 42         return row[columnIndex];
 43     }
 44     public String getColumnName(int columnIndex){
 45         try{
 46             ResultSetMetaData metaData=resultSet.getMetaData();
 47             return metaData.getColumnName(columnIndex+1);
 48         }catch(Exception e){
 49             e.printStackTrace();
 50             return "";
 51         }
 52     }        
 53 }

ResultSetTableModel'ı kullanarak JTable'da veri gösteren örnek
JdbcSwingTable.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster

  1 package com.godoro.samples.jdbc;
  2 import java.sql.*;
  3 import java.util.*;
  4 import javax.swing.*;
  5 import javax.swing.table.*;
  6 import javax.swing.event.*;
  7 public class JdbcSwingTable {
  8   public static void main(String[] args)
  9     throws Exception
 10   { 
 11     String driverClass="sun.jdbc.odbc.JdbcOdbcDriver";     
 12     Class.forName(driverClass);       
 13     String url="jdbc:odbc:mydatasource";     
 14     String username="sa";
 15     String password="godoro";
 16     Connection connection = DriverManager.getConnection(url,username,password);
 17     System.out.println("Connected to database");                
 18     String sql="select * from BankAccount";
 19     Statement stmt=connection.createStatement();
 20     ResultSet rs=stmt.executeQuery(sql);
 21     ResultSetTableModel model=new ResultSetTableModel(rs);
 22     
 23     JFrame frame=new JFrame();
 24     JTable table=new JTable(model);
 25     JScrollPane scroll=new JScrollPane(table);
 26     frame.getContentPane().add(scroll);
 27     frame.setBounds(100,100,400, 300);
 28     frame.setVisible(true);
 29       
 30       
 31   }
 32     
 33 }

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır