我想把查询出来的数据(大约5个字段)用类似于excel的形式显示出来,
怎么做呀,谁有没有可参考的代码???
(只需要把sqlserver 2000查询出来的数据怎样显示到jtable即可)
我有好多种查询,是不是要对每一种查询建立对应的查询结果界面呀???还是把jtable做成动态的???
怎么样做最简便亚呀?

解决方案 »

  1.   

    你的JTable中放的有一个TableModel吧~查询出的结果一次放入vector
    然后用model的.addRow(vector)方法把数据添加到每一行~
      

  2.   

    给个代码片段~供参考
    ResultSet rs = MyConnection.exeQuery(sql);
            Vector vector = null;
            try {
                while (rs.next()) {
                    vector = new Vector();
                    vector.add(rs.getInt("activId"));
                    vector.add(rs.getString("activName"));
                    vector.add(rs.getString("type"));
                    vector.add(rs.getInt("typeCount"));
                    vector.add(rs.getString("userName"));
                    vector.add(rs.getString("memo"));
                    dtm.addRow(vector);//这里的dtm是实现定义好的DefaultTableModel
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
      

  3.   

    支持,查一下API吧!我前几天就遇到了你的问题addRow(vector)方法会自动显示的
      

  4.   

    Class.forname("略");
    Connection con=DriveManager.getConnection();
    Statement smt=con.createStatement(sqlQuery);
    ResultSet rs = MyConnection.exeQuery(sql); 
            Vector vector = null; 
            try { 
                while (rs.next()) { 
                    vector = new Vector(); 
                    vector.add(rs.getInt("activId")); 
                    vector.add(rs.getString("activName")); 
                    vector.add(rs.getString("type")); 
                    vector.add(rs.getInt("typeCount")); 
                    vector.add(rs.getString("userName")); 
                    vector.add(rs.getString("memo")); 
                    dtm.addRow(vector);//这里的dtm是实现定义好的DefaultTableModel 
                } 
            } catch (Exception ex) { 
                ex.printStackTrace(); 
            }
      

  5.   

    去查api 系统定义好了一个 DefaultTableModel 的 tabel模型 你可以直接调用
      

  6.   


    请问一下,dtm是实现定义好的DefaultTableModel  ,DefaultTableModel是怎么设计呀???
      

  7.   

    先导入DefaultTableModel类,再实例化一个对象
      DefaultTableModel dtm=new DefaultTableModel();
    然后  JTable.setMolel(dtm);即可!
      

  8.   

    那最后怎么显示它呀??以下是我的代码:package storemanager_inquire;
    import java.awt.datatransfer.*; 
    import java.awt.*;
    import javax.swing.*;
    import java.awt.BorderLayout;
    import com.borland.jbcl.layout.XYLayout;
    import com.borland.jbcl.layout.*;
    import javax.swing.table.DefaultTableModel;
    import java.sql.*;
    import java.util.Vector; /**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2007</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class testFrame
        extends JFrame {
      JPanel contentPane;
      XYLayout xYLayout1 = new XYLayout();
      JTable jTable3 = new JTable();
      public testFrame() {
        try {
          setDefaultCloseOperation(EXIT_ON_CLOSE);
          jbInit();
        }
        catch (Exception exception) {
          exception.printStackTrace();
        }
      }  /**
       * Component initialization.
       *
       * @throws java.lang.Exception
       */
      private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(xYLayout1);
        setSize(new Dimension(400, 300));
        setTitle("Frame Title");
        contentPane.setBackground(SystemColor.controlLtHighlight);
        contentPane.add(jTable3, new XYConstraints(91, 93, 238, 129));
        //  DefaultTableModel dtm=new DefaultTableModel(); 
         //   jTable3.setModel(dtm);
         get_actionID();
      }
      
      //获得当前股票交易表中的序号:
    public int  get_actionID() {
     int a=0;
       Connection con = null;
      Statement sta = null;
      ResultSet rs = null;
      DefaultTableModel dtm=new DefaultTableModel(); 
            jTable3.setModel(dtm);
    try {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //加载驱动
    con = DriverManager.getConnection(
       "jdbc:microsoft:sqlserver://LENOVO-320EB584:1433;DatabaseName=stock",
       "sa", "123");
       sta = con.createStatement();
       rs = sta.executeQuery("select  *from stock"); //executeQuery
        Vector vector=new Vector(); 
        // Vector vector = null; 
    while (rs.next()) {
     //a=rs.getInt("seq_num");
     vector = new Vector(); 
    vector.add(rs.getInt("seq_num")); 
      vector.add(rs.getInt("amount")); 
      vector.add(rs.getInt("utilize_amount")); 
      vector.add(rs.getString("date")); 
      dtm.addRow(vector);//这里的dtm是实现定义好的DefaultTableModel  
     }
    }catch (Exception e) { try {
       rs.close();
       sta.close();
       con.close();
     }
     catch (SQLException e1) {
       e1.printStackTrace();
     }
     e.printStackTrace();
    }
    finally {
     try {
       rs.close();
       sta.close();
       con.close();
     }
     catch (SQLException e1) {
       e1.printStackTrace();
     }
    }
        //  System.out.println(a);
    return a;}  
    }
      

  9.   

    上面问题解决问题了,就不知道怎么按jscrollpane????
    代码如下:
    package storemanager_inquire;
    import java.awt.datatransfer.*; 
    import java.awt.*;
    import javax.swing.*;
    import java.awt.BorderLayout;
    import com.borland.jbcl.layout.XYLayout;
    import com.borland.jbcl.layout.*;
    import javax.swing.table.DefaultTableModel;
    import java.sql.*;
    import java.util.Vector; /**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2007</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class testFrame
        extends JFrame {
      JPanel contentPane;
      XYLayout xYLayout1 = new XYLayout();
      JTable jTable3 = new JTable();
      JScrollPane jScrollPane1 = new JScrollPane();
      // JScrollPane jscrollpane1 = new JScrollPane(jTable3);//将表格加个滚动条
      public testFrame() {
        try {
          setDefaultCloseOperation(EXIT_ON_CLOSE);
          jbInit();
        }
        catch (Exception exception) {
          exception.printStackTrace();
        }
      }  /**
       * Component initialization.
       *
       * @throws java.lang.Exception
       */
      private void jbInit() throws Exception {
     
        contentPane = (JPanel) getContentPane();    contentPane.setLayout(xYLayout1);
        setSize(new Dimension(400, 300));
        setTitle("Frame Title");
        contentPane.setBackground(SystemColor.controlLtHighlight);
        jTable3.setBackground(Color.red);
        contentPane.add(jTable3, new XYConstraints(91, 93, 238, 129));
        contentPane.add(jScrollPane1, new XYConstraints(88, 49, 248, 201));
        get_actionID();
      }
      
      //获得当前股票交易表中的序号:
    public int  get_actionID() {
          // JFrame f=new JFrame(); 
     int a=0;
       Connection con = null;
      Statement sta = null;
      ResultSet rs = null;
       String[] col = { "顺序", "总量", "可用","日期" };
       DefaultTableModel dtm= new DefaultTableModel(col,0); //定义一个表的模板
      //DefaultTableModel dtm=new DefaultTableModel(); 
            jTable3.setModel(dtm);
         //this.add(jscrollpane1); //将加载了表的滚动条在JFrame中显示
    try {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //加载驱动
    con = DriverManager.getConnection(
       "jdbc:microsoft:sqlserver://LENOVO-320EB584:1433;DatabaseName=stock",
       "sa", "123");
       sta = con.createStatement();
       rs = sta.executeQuery("select  *from stock"); //executeQuery
        //Vector vector=new Vector(); 
        // Vector vector = null; 
    while (rs.next()) {
      Vector vector=new Vector(); 
     //a=rs.getInt("seq_num");
     vector = new Vector(); 
    vector.add(rs.getInt("seq_num")); 
      vector.add(rs.getInt("amount")); 
      vector.add(rs.getInt("utilize_amount")); 
      vector.add(rs.getString("date")); 
       dtm.addRow(vector);    //这里的dtm是实现定义好的DefaultTableModel  
     }
    }catch (Exception e) { try {
       rs.close();
       sta.close();
       con.close();
     }
     catch (SQLException e1) {
       e1.printStackTrace();
     }
     e.printStackTrace();
    }
    finally {
     try {
       rs.close();
       sta.close();
       con.close();
     }
     catch (SQLException e) {
       e.printStackTrace();
     }
     System.out.println(); 
    }
     // f.setVisible(true); 
         //System.out.println(e);
    return a;
    }  
    }
      

  10.   

    上面问题已经解决了。 
        想问一下,我可能要有很多种查询。 是不是每一种查询都要建一个查询窗口页面(即建一个application)
    有没有更好的解决办法呀?