الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام DataSet في برنامج Jbuilder

مغلق
بدأه Bassam Basamad في 5 مايو 2004 · 2 رد · 720 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :)

للذين يستخدمون برنامج ال jbuilder من borland ..وتعاملها مع ال DataSet ..بإمكانه الإستفادة من هذا الدرس.

بداية سأعرض ال Output النهائي:

dataset.gif

الآن نقوم بعرض الكود بهذا ال Output :

import javax.swing.*;
import com.borland.dx.sql.dataset.*;
import com.borland.dx.dataset.*;
import com.borland.dbswing.*;
import java.awt.event.*;
import java.awt.*;
import com.microsoft.jdbc.sqlserver.*;
import com.microsoft.jdbcx.sqlserver.*;
import com.microsoft.util.*;
import java.sql.*;


public class LoadDataSet extends JFrame {
static boolean  packFrame=false;
  JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    JPanel jPanel1 = new JPanel();
    com.borland.dx.dataset.TableDataSet tableDataSet1 = new com.borland.dx.dataset.TableDataSet();

    JdbNavToolBar jdbNavToolBar1 = new JdbNavToolBar();
    TableScrollPane tableScrollPane1 = new TableScrollPane();
    JdbStatusLabel jdbStatusLabel1 = new JdbStatusLabel();
    JdbTable jdbTable1 = new JdbTable();

    //Construct the frame
    public LoadDataSet() {
      enableEvents(AWTEvent.WINDOW_EVENT_MASK);
      try {
        jbInit();
      }
      catch (Exception e) {
        e.printStackTrace();
      }
    }
    //Component initialization
    private void jbInit() throws Exception{
      contentPane = (JPanel) this.getContentPane();
      this.setSize(new Dimension(500, 300));
      this.setTitle("Welcome");
      jPanel1.setLayout(borderLayout1);
      contentPane.add(jPanel1, BorderLayout.CENTER);
      contentPane.add(jdbStatusLabel1, BorderLayout.SOUTH);
      jPanel1.add(jdbNavToolBar1, BorderLayout.NORTH);
      jdbTable1.setDataSet(tableDataSet1);
      jPanel1.add(tableScrollPane1, BorderLayout.CENTER);
      tableScrollPane1.getViewport().add(jdbTable1);

      tableDataSet1.setProvider(new ProviderImp());

    }

    //Overridden so we can exit when window is closed
    protected void processWindowEvent(WindowEvent e) {
      super.processWindowEvent(e);
      if (e.getID() == WindowEvent.WINDOW_CLOSING) {
        System.exit(0);
      }
    }
class ProviderImp extends Provider
    {
      public void provideData(StorageDataSet dataSet,boolean toOpen) {
        Database db = new Database();
        QueryDataSet qds = new QueryDataSet();
        try {
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          Connection con = DriverManager.getConnection(
              "jdbc:odbc:Bassam", "sa", "bassam");
          db.setJdbcConnection(con);
          qds.setQuery(new QueryDescriptor(db, "select * from Employees", null, true,
                                           Load.ALL));
          qds.open();
          DataSetData data = DataSetData.extractDataSet(qds);
          dataSet.empty();
          data.loadDataSet(dataSet);
        }
        catch (Exception e) {
          System.out.print(e);
        }
        finally {
          qds.close();
          db.closeConnection();
        }

      }
    }
  public static void main(String[] args) {
    LoadDataSet loadDataSet = new LoadDataSet();
    if (packFrame) {
      loadDataSet.pack();
    }
    else {
      loadDataSet.validate();
    }
    // Center the frame
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = loadDataSet.getSize();
    if (frameSize.height > screenSize.height)
      frameSize.height = screenSize.height;
    if (frameSize.width > screenSize.width)
      frameSize.width = screenSize.width;
    loadDataSet.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);

    loadDataSet.setVisible(true);

  }
}

لاتخاف الكود طويل لكنه سهل.. :D ..فطول الكود هو سببه ال Design ..

اما بالنسبه لأسطر الكود الخاصة بالدرس فهي كالتالي:

com.borland.dx.dataset.TableDataSet tableDataSet1 = new com.borland.dx.dataset.TableDataSet();

TableDataSet : كلاس يمثل جدول واحد في الذاكره..ليس مثل ال DataSet الذي عبارة عن واحد او مجموعة من الجداول..نقوم بعمل instanse منه ليكون مصدر الداتا(Data Source) ل JdbTable وهو يقوم بعرض الداتا على الفريم..وهذا وهو سطر الكود الذي يقوم بذلك:

jdbTable1.setDataSet(tableDataSet1);

ومن تم لابد من ملىء ال TableDataSet بالداتا وذلك عن طريق سطر الكود التالي:

tableDataSet1.setProvider(new ProviderImp());

ProviderImp :عبارة عن كلاس يورث من كلاس Provider الذي فيه دالة تقوم بعمل تزويد البيانات من قواعد البيانات..

اما بالنسبة للكلاس ProviderImp ففيه الدالة provideData التي تمرر كلاس من نوع StorageDataSet وهو الكلاس الذي سنملائه بالداتا من الكلاس DataSetData...كما في الكود التالي:

DataSetData data = DataSetData.extractDataSet(qds);
          dataSet.empty();
          data.loadDataSet(dataSet);

qds :وهو الكلاس الذي يقوم بغسترجاع البيانات من قاعدة البيانات بواسطة ال sql..كما في الكود التالي:

qds.setQuery(new QueryDescriptor(db, "select * from Employees", null, true,
                                           Load.ALL));

db: وهو عبارة عن database connection الذي من خلاله نربطه مع قاعدة البيانات..كما في الكود التالي:

db.setJdbcConnection(con);

con: وهو كائن من الكلاس المعروف Connection للربط مع Database ..

وإن شاء الله يكون الدرس مفهوم..

بالتوفيق إن شاء الله..

techvisio.gif

اللهم انصر إخواننا المجاهدين في كل مكان..

#2

Thank you for this useful lesson

#3

بعد المناقشة فيه سوف يغلق و ينقل الى الارشيف

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

هذا الموضوع مغلق.

مواضيع مشابهة