2014-11-04 3 views
0

hello У меня есть jTable, и я хочу вставить дату из этого SQL-запроса в jTable. Но я могу "т вставить в JTable дату с Rank, другой датой вставки правильной, но 6 столбца JTable пуст.Вставить в jTable дату из MySQL

try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/db_mafia?useUnicode=true&characterEncoding=utf8", "root", "qwerty"); 
    Statement st2 = con.createStatement(); 

    ResultSet result2 = st2.executeQuery("SELECT t.*, @rank := @Rank + 1 AS rank \n" + 
     "FROM (SELECT id_user,(SELECT surname FROM users WHERE id_user=id),(SELECT name FROM users WHERE id_user=id), (SELECT nickname FROM users WHERE id_user=id),SUM(points) AS points FROM RESULT \n" + 
     "GROUP BY id_user ORDER BY points asc) t"); 

    while (result2.next()) { 
     ((DefaultTableModel) jTable1.getModel()).addRow(new Object[] { 
      result2.getString(1), result2.getString(2), result2.getString(3), result2.getString(4), result2.getString(5), result2.getString(6) 
     }); 

    } 
    result2.close(); 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
    e.printStackTrace(); 
    System.exit(1); 
} 

И перед запросом я хочу выполнить это, но я не знаю, где это вставить :

SET @Rank = 0; 
+0

Почему вы не можете добавить 'тип Rank' 'Date' в' JTable'? – MadProgrammer

+0

Вы пытались использовать 'getDate 'вместо' getString'? Запрос не должен '\ n' – MadProgrammer

+0

спасибо, вопрос решен – Lev

ответ

1

Установите ранг вар в 0 перед отборным с этим: st2.executeUpdate ("SET @Rank = 0");

try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/db_mafia?useUnicode=true&characterEncoding=utf8", "root", "qwerty"); 
    Statement st2 = con.createStatement(); 

    st2.executeUpdate("SET @Rank = 0"); 

    ResultSet result2 = st2.executeQuery("SELECT t.*, @Rank := @Rank + 1 AS rank \n" + 
     "FROM (SELECT id_user,(SELECT surname FROM users WHERE id_user=id),(SELECT name FROM users WHERE id_user=id), (SELECT nickname FROM users WHERE id_user=id),SUM(points) AS points FROM RESULT \n" + 
     "GROUP BY id_user ORDER BY points asc) t"); 

    while (result2.next()) { 
     ((DefaultTableModel) jTable1.getModel()).addRow(new Object[] { 
      result2.getString(1), result2.getString(2), result2.getString(3), result2.getString(4), result2.getString(5), result2.getString(6) 
     }); 

    } 
    result2.close(); 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
    e.printStackTrace(); 
    System.exit(1); 
} 
+0

И разница была бы? – MadProgrammer

+0

установка Ранг до 0 перед запросом, чтобы инициализировать аккумулятор, я думаю, с помощью: st2.executeUpdate ("SET @Rank = 0"); – rafalopez79

+0

Хорошо, пропустил это, возможно, захочет указать это на ОП, поскольку в Интернете достаточно стенок кода;) – MadProgrammer

Смежные вопросы