2014-02-06 2 views
0

Я работаю с MySQL и Java JTableКак преобразовать байт [] на сегодняшний день

В одном случае я могу получить только от JTable байт [], представляющая дату.

Я не смог найти способ преобразования байта [] назад в дату.

Я построил этот код для того, чтобы смоделировать проблему:

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); 
} 

Если бы я только иметь доступ к байту [] byteArr, как преобразовать его в Date?

+0

String s = Arrays.toString (byteArray); then convert 's' to date ... Я рекомендую библиотеки jodatime. Или вы можете использовать Calendar class – shan

+0

Я не понимаю, почему вы не можете получить Date с помощью JDBC. Выполняется ли 'rs.getDate (1);' fail? Ты знаешь почему? – aalku

+0

Эй, спасибо за ваше мнение, причина, по которой я не могу использовать функцию getDate, - это то, что я переопределяю функцию 'Компонент getTableCellRendererComponent (таблица JTable, значение Object, boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex)' on 'javax.swing .table.DefaultTableCellRenderer', это дает только переменную Object value, а не resultSet. – yaniv

ответ

0

String s = Arrays.toString(byteArr); затем преобразовать 'S' на сегодняшний день ...

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

или вы можете использовать я рекомендую jodatime библиотеку ...

1

Shan, Пробовал свое решение, но он дал мне ошибку. см., Преобразование Arrays.toString(byteArr) возвращает значение int, а не символы. Так что это решение, которое сработало для меня:

String s = new String((byte[])value); 
d1 = new SimpleDateFormat("yyyy-MM-dd").parse(s); 
Смежные вопросы