2013-04-08 67 views
3

我想更改我的JTable的头,该头显示来自SQL Server数据库的数据,因为它也在我的数据库上显示相同的列名。我只需要数据本身,而不是列名。JTable头格式

这里是我用于显示数据的代码:

public void search() throws Exception{ 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      String url = "jdbc:odbc:*****"; 
      String user = "*****"; 
      String pass = "*****"; 
      Connection con = DriverManager.getConnection(url, user, pass); 
      Statement state = con.createStatement(); 
      ResultSet rs = state.executeQuery("SELECT * FROM dbo.Patients"); 
      ResultSetMetaData rsmetadata = rs.getMetaData(); 
      int columns = rsmetadata.getColumnCount(); 
      DefaultTableModel dtm = new DefaultTableModel(); 
      Vector column_name = new Vector(); 
      Vector data_rows = new Vector(); 

      for (int i=1; i<columns;i++){ 
       column_name.addElement(rsmetadata.getColumnName(i)); 
      } 
      dtm.setColumnIdentifiers(column_name); 

      while(rs.next()){ 
       data_rows = new Vector(); 
       for (int j=1; j<columns; j++){ 
       data_rows.addElement(rs.getString(j)); 
       } 
       dtm.addRow(data_rows); 
      } 
      tblPatient.setModel(dtm); 
    } 

,这是结果:

THIS

我想改变该pIDNo到患者ID,pLName到姓氏,pFName为名字,等等等等......

+0

我会改变查询来检索每一列并更改名称。否则,我会查找'column_name'内的列名并更改名称(当然,这最后是非常天真的)。 – 2013-04-08 04:37:27

+0

与问题无关,但最好通过'ArrayList'更改'Vector:[为什么Java Vector类被认为已经过时或被弃用?](http://stackoverflow.com/q/1386275/1065197) – 2013-04-08 04:38:39

+0

@LuiggiMendoza真的不知道Vector是什么,我只是遵循一个网站上的一些说明,我谷歌显示数据的JTable,结果的问题是,有一个缺少数据,它有一个金钱数据类型,它应该是最后一部分,但它没有出来,是因为我用Vector? – 2013-04-08 05:08:07

回答

4

改变你SELECT * FROM dbo.PatientsSELECT pIDNo AS 'Patient ID', pLName AS '.... 是最简单的方法。而且,命名列名称而不是使用*更快。

+0

你知道我该如何显示一个MONEY DATA TYPE到JTable? – 2013-04-08 05:17:07

+0

@CrystalMaiden:这是一个新问题;首先查看[this](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender)。 – trashgod 2013-04-08 07:31:17

4

我会尝试修改您的选择:

代替

SELECT * FROM dbo.Patients

使用

SELECT pId as "Patient ID", ...