java.sql中有DataExpress、dbswing吗?是不是你的JDBC驱动不好,效率不高的原因。java的UI方面速度是很慢的,我们从来都不用。

解决方案 »

  1.   

    java.sql包当然没有DataExpress、dbswing,DataExpress、dbswing是在broland的包里。数据库方面的优化我已经做得基本够了,况且只用2,3条数据,数据库优化其实并不起明显作用。不过还是有个好消息,我做了大量的试验,dbswing确实很慢,相同的查询用QueryDataSet,JdbTable和用ResultSet查出来手工填进JTable数度相差很大,建议大家用后者,但比起前者就是麻烦一点,决定写个通用的类来搞定。
      

  2.   

    下面就是我写的这个类查出数据然后填进table中,欢迎指正import java.sql.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;public class FillTable
    {
      private JTable table;
      private Vector vCdata;
      private String ssql;
      private int irowcount=0;
      private DMCredit dMCredit1;  public FillTable(JTable table,Vector vCdata,String ssql)
      {
        try
        {
          this.table=table;
          this.vCdata=vCdata;
          this.ssql=ssql;
          jbInit();    }
        catch(Exception e)
        {
          e.printStackTrace();
        }
      }
      private void jbInit() throws Exception
      {
        dMCredit1 = credit.DMCredit.getDataModule();
      }  public int setData()
      {
         MyTableModle dtm = new MyTableModle(); //定义表格的数据模型
         table.setModel(dtm);
         table.getSelectionModel().setSelectionMode(0);
         for(int i=0;i<vCdata.size();i++)
         {
           dtm.addColumn((String)vCdata.elementAt(i));
         }
         Statement stm = dMCredit1.getDBCredit().createStatement();
         try
         {
           ResultSet rs = stm.executeQuery(ssql);
           while (rs.next())
           {
             Vector vRdata=new Vector();
             for (int j=0;j<vCdata.size();j++)
             {
               vRdata.addElement(rs.getString(j + 1));
             }
             dtm.addRow(vRdata);
             irowcount++;
           }
           rs.close();
           table.repaint();
           return irowcount;
         }
         catch (Exception ex)
         {
           return -1;
         }
      }
    }import javax.swing.table.*;
    import java.util.*;
    class MyTableModle extends DefaultTableModel
    {
    public MyTableModle()
    {
    super();
      }
      public boolean isCellEditable(int row, int column)
      {//设置表列不可编辑
        return false;
      }
    }