比如一个employ表,一个dept表。我要把两个表的部分字段组合在一起,然后放到Jtable中。怎么解决?
一个employimpl  一个deptimpl。 但是两个返回的分别是employ 和 dept 啊!

解决方案 »

  1.   

    Jtable   是个什么玩意啊,也不说清楚
      

  2.   

    JTable是java里面的一个类。就是一个表格。 
      

  3.   

    在SQL语句上下功夫,LZ应该会把一张表放入JTable中吧。 你可以通过SQL语句把主外键有关联的2张表拼成一张表。返回ResultSet类型,然后拆成2维数组或者Vector<Vector<Object>> ,再赋给JTable.select a.你需要的字段,b.你需要的字段 from a,b where a.id=b.id 
      

  4.   


    /**
     * @author Administrator  * 
     * connection:数据库的连接 
     * sql:要查询的sql语句
     * name:希望在表格每列顶行显示的文字
     * 
     */
    public class DisplayDialog extends JDialog {//假设表格在JDialog上
        Statement stmt = null;
        DisplayDialog(Connection connection, String sql,
        Object[] name) {
    this.setBounds(200, 200, 400, 500);
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    this.setVisible(true);
    try {
        stmt = connection.createStatement(
        ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去
        ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容,
        ResultSet rs = stmt.executeQuery(sql);     rs.last();// 指到定位到最后一行
        int row = rs.getRow();// 获得总行数
        rs.beforeFirst();// 定位到开始
        ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数
        int col = rsmd1.getColumnCount(); // 计算字段个数
        Object a[][] = new Object[row][col];
        JTable table = new JTable(a, name);
        for (int index = 0; rs.next(); index++)
    for (int j = 0; j < col; j++)
        a[index][j] = rs.getString(j + 1);
        getContentPane().removeAll();
        add(new JScrollPane(table), BorderLayout.CENTER);
        validate();
        rs.close();
    } catch (SQLException e) {
        System.out.println("SQL语句无效");
        add(new JLabel("SQL语句无效"));
        e.printStackTrace();
    }
        }
    }
      

  5.   


    //-----------------------------------------------------------------------------------
        Statement stmt = connection.createStatement(
        ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去
        ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容,
        ResultSet rs = stmt.executeQuery(sql);//开始执行查询语句,结果存储在rs中
        rs.last();// 指到定位到最后一行
        int row = rs.getRow();// 获得总行数
        rs.beforeFirst();// 定位到开始
        ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数
        int col = rsmd1.getColumnCount(); // 计算字段个数
        Object a[][] = new Object[row][col];//确定表格存储数据的大小
        JTable table = new JTable(a, name);//建立表格
        for (int index = 0; rs.next(); index++)//使用查询返回的结果初始化表格
    for (int j = 0; j < col; j++)
        a[index][j] = rs.getString(j + 1);
    //--------------------------------------------------------------------------------

      

  6.   

     public JTable createJTableFromSQL(Connection connection,String sql , Object[] name)throws Exception{
        Statement stmt = connection.createStatement(
        ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去
        ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容,
        ResultSet rs = stmt.executeQuery(sql);//开始执行查询语句,结果存储在rs中
        rs.last();// 指到定位到最后一行
        int row = rs.getRow();// 获得总行数
        rs.beforeFirst();// 定位到开始
        ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数
        int col = rsmd1.getColumnCount(); // 计算字段个数
        Object a[][] = new Object[row][col];//确定表格存储数据的大小
        JTable jTable = new JTable(a, name);//建立表格
        for (int index = 0; rs.next(); index++)//使用查询返回的结果初始化表格
    for (int j = 0; j < col; j++)
        a[index][j] = rs.getString(j + 1);
    return jTable;
        }
      

  7.   

    LS代码给的很详细,不过个人给点建议。自从学了集合之后,数组这东西基本上就放弃使用了。因为数组定长有很多局限性,或者说浪费很多操作。比如说ls 
    int row = rs.getRow();// 获得总行数因为你要定义2维数组,你就必须获得它的长度。
    因为集合不定长,只要不断往里加就可以。所以在做解决类似问题时,用集合会远比用数组方便哈。个人建议~