2013-12-21 75 views
0

我編寫程序以檢索數據庫中的數據以顯示在JTable上。該程序可以運行沒有錯誤,但它不顯示列名稱。下面的代碼:不從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告訴我的列名,但爲什麼在上面,它不顯示。

+1

你如何顯示你的JTable?你將它存儲在什麼類型的組件中? – PakkuDon

回答

1

程序可以沒有錯誤運行,但它不顯示列名。

列名僅在將表添加到JScrollPane時顯示。因此,在你的代碼的某個地方,你需要這樣的東西:

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

對於一個完整的工作示例,你可以使用Table From Database發現Table From Database Example

+0

非常感謝!是工作。 –

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); 
+0

基本上你的解決方案是用行和列向量創建一個新的DefaultTableMode。值得一試,儘管你的代碼(格式)留下了一點慾望,_歡迎來到StackOverflow._ –