我编写程序以从数据库中检索数据以显示在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
显示列名,但为什么在上面,它没有显示。
答案 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);