不显示Jtable上数据库的列名

时间:2013-12-21 06:53:23

标签: java sql swing jtable awt

我编写程序以从数据库中检索数据以显示在JTable上。程序可以在没有错误的情况下运行,但它不显示列名。代码如下:

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Connection dbcon = DriverManager.getConnection("" +"jdbc:sqlserver://localhost;databaseName=Store;user=sa;password=t81iS17Zxj");
    Statement sqlstatement = dbcon.createStatement();
    ResultSet dbresultset = sqlstatement.executeQuery("select * from Store.dbo.Product");
    rsmetadata = dbresultset.getMetaData();       // Get metadata on them
    numcols = rsmetadata.getColumnCount();    // How many columns?
    //  Get column names

    for (int i = 1; i <= numcols; i++)
    {
        defaultmodel.addColumn( rsmetadata.getColumnName(i));
    }
    //  Get row data

    while (dbresultset.next())
    {
        Vector<Object> row = new Vector<Object>(numcols);

        for (int i = 1; i <= numcols; i++)
        {
            row.addElement( dbresultset.getObject(i) );
        }

        defaultmodel.addRow(row );
    }

我尝试打印rsmetadata.getColumnName(i)的值,然后Eclipse显示列名,但为什么在上面,它没有显示。

2 个答案:

答案 0 :(得分:1)

  

程序可以在没有错误的情况下运行,但它不显示列名。

只有在将表添加到JScrollPane时才会显示列名。因此,在代码中的某处需要:

JTable table = new JTable(...);
JScrollPane scrollPane = new JScrollPane( table );
panel.add( scrollPane );

有关完整的工作示例,您可以使用Table From Database中的Table From Database Example

答案 1 :(得分:0)

尝试以下代码: -

此代码返回包含数据库

数据的列名
      int col_count=0;

      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      Connection dbcon = DriverManager.getConnection("" +"jdbc:sqlserver://localhost;databaseName=Store;user=sa;password=t81iS17Zxj");
      Statement sqlstatement = dbcon.createStatement();
      ResultSet dbresultset = sqlstatement.executeQuery("select * from Store.dbo.Product");


     Vector column_name=new Vector();   
     column_name=new Vector();   
    ResultSetMetaData rsm= dbresultset .getMetaData();
     col_count=rsm.getColumnCount();

    for(int a=0;a<col_count;a++)
      {
         column_name.addElement(rsm.getColumnLabel(a+1)); 

      }

    Vector newRow=null,nRow;
    Vector row=new Vector();

    while(dbresultset .next())
    {
        newRow =new Vector();
       for(int j=0;j<col_count;j++)
        {
         newRow.addElement(dbresultset .getObject(j+1));
         }

         row.addElement(newRow);

        }

     DefaultTableModel model= new DefaultTableModel(row, column_name);

      ztable.setModel(model);