2014-02-06 47 views
0

餘米與MySQL和Java的JTable如何轉換一個byte []最新

工作在一種情況下,我只能從JTable的一個byte []獲得表示日期。

我找不到將字節[]轉換回日期的方法。

我建爲了這段代碼模擬問題:

public demoJFrame1() { 
    try { 
     setSize(new Dimension(300, 300)); 

     String select = "SELECT validity_start_date FROM `Table` "; 
     Connection c = ObtainConnection(); 

     java.sql.ResultSet rs = c.createStatement().executeQuery(select); 

     if (rs.next()){ 
      Date dt = rs.getDate(1); 
      byte[] byteArr = rs.getBytes(1); 
     } 

     // if i only have access to the byte[] byteArr, how do i convert it to Date variable ???? 

    } catch (java.sql.SQLException ex) { 
     Logger.getLogger(demoJFrame1.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

public final Connection ObtainConnection() throws SQLException{ 
     String DBurl  = "jdbc:mysql://localhost:3306/DBname"; 
     String DBdriver = "com.mysql.jdbc.Driver"; 
     String DBlogin  = "root"; 
     String DBpassword = "pass"; 

     Class.forName(DBdriver); 
     return java.sql.DriverManager.getConnection(DBurl, DBlogin, DBpassword); 
} 

如果我只能訪問到的byte [] byteArr,我如何將其轉換爲日期?

+0

String s = Arrays.toString(byteArray); 然後轉換到'...' 我推薦jodatime庫。或者你可以使用日曆類 – shan

+0

我不明白你爲什麼不能使用JDBC獲取日期。 'rs.getDate(1);'失敗了嗎?你知道爲什麼嗎? – aalku

+0

嘿,謝謝你不要緊,我不能使用getDate函數的原因是因爲我重載函數'Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int rowIndex,int vColIndex)'on'javax.swing .table.DefaultTableCellRenderer',這隻給出Object值變量,而不是resultSet它自己。 – yaniv

回答

0

String s = Arrays.toString(byteArr);那麼的'轉換日期...

Date date = new SimpleDateFormat("ddMMyyyy").parse(s); 

,或者你可以用我推薦jodatime庫...

1

山,想你的解決方案,但它給了我一個錯誤。請參閱 ,Arrays.toString(byteArr)的轉換返回int值而不是字符。所以這是對我有用的解決方案:

String s = new String((byte[])value); 
d1 = new SimpleDateFormat("yyyy-MM-dd").parse(s);