تعبئة جدول البيانات JTable ببيانات جدول قاعدة البيانات

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

تعبئة جدول البيانات JTable ببيانات جدول قاعدة البيانات

مُساهمة من طرف أحمد مناع في الثلاثاء مارس 04, 2014 2:08 pm

بسم الله الرحمن الرحيم


أهلا وسهلا بكم إخوانى الكرام .... منذ فترة كتبت الاستاذة /زهراء مقال غاية فى الروعة لكيفية أنشاء و استخدام جدول البيانات أو العنصر الرسومى JTable وكنا نقوم بملىء أو تعبئة بيانات العنصر الرسومى يدويا JTable

فى هذا المقال إن شاء الله تعالى سنتعلم سويا كيفية تعبئة جدول البيانات JTable ببيانات جدول قاعدة البيانات وذلك من خلال استخدام الواجهة DefaultTableModel و ذلك على النحو التالى :

2_ نقوم بالاعلان عن كائنات الاتصال بقاعدة البيانات على النحو التالى :

الرمز:
 Connection con;
    Statement stmt;
    ResultSet rs;

1_ثم نقوم بانشاء فئة وليكن بأسم buildTableModel من خلال استخدام الواجهة DefaultTableModel على النحو التالى و ذلك للحصول اسماء حقول الجدول و بيانات الحقول :

الرمز:
public static DefaultTableModel buildTableModel(ResultSet rs)
        throws SQLException {

    ResultSetMetaData metaData = rs.getMetaData();

    // الحصول على اسماء اعمدة الجدول
    Vector<String> columnNames = new Vector<String>();
    int columnCount = metaData.getColumnCount();
   
    for (int column = 1; column <= columnCount; column++) {
    columnNames.add(metaData.getColumnName(column));
    }

    // الحصول على بيانات الجدول
    Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    while (rs.next()) {
    Vector<Object> vector = new Vector<Object>();
       
        for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
        vector.add(rs.getObject(columnIndex));
        }
        data.add(vector);
    }

    return new DefaultTableModel(data, columnNames);

}

2_ بعد ذلك نقوم بانشاء الجدول مع تمرير الطريقة التى تم إنشائها

الرمز:
JTable table = new JTable(buildTableModel(rs));

و الكود الكامل على النحو التالى :

الرمز:

package rs;

import java.sql.*;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Rs {

 
 
    public static void main(String[] args) {
       
    Connection con;
    Statement stmt;
    ResultSet rs;
   
     
            try {
               
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=db1.mdb");
          stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
          String SQL = "select * from WORKERS";
          rs = stmt.executeQuery( SQL );
         
    JTable table = new JTable(buildTableModel(rs));
         
     
 
    JFrame f = new JFrame("Simple example");
    f.setSize(400, 250);
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(3);
    f.add(table);
    f.add(new JScrollPane(table));
    f.setVisible(true);
   
      } catch (ClassNotFoundException ex) {
            Logger.getLogger(Rs.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Rs.class.getName()).log(Level.SEVERE, null, ex);
        }
       
    }
   
   
    public static DefaultTableModel buildTableModel(ResultSet rs)
        throws SQLException {

    ResultSetMetaData metaData = rs.getMetaData();

    // names of columns
    Vector<String> columnNames = new Vector<String>();
    int columnCount = metaData.getColumnCount();
   
    for (int column = 1; column <= columnCount; column++) {
    columnNames.add(metaData.getColumnName(column));
    }

    // data of the table
    Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    while (rs.next()) {
    Vector<Object> vector = new Vector<Object>();
       
        for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
        vector.add(rs.getObject(columnIndex));
        }
        data.add(vector);
    }

    return new DefaultTableModel(data, columnNames);

}
}

أشكركم

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 809
النقاط : 1478
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعبئة جدول البيانات JTable ببيانات جدول قاعدة البيانات

مُساهمة من طرف زهراء في الأربعاء مارس 05, 2014 1:13 pm

دايما سباق للخير أخى أحمد أشكرك

زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 372
التقيم : 24
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى