Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Не получается перевести ResultSet в JTable


Автор: Viktorr 19.3.2009, 14:28
Здравствуйте.
Необходимо представить resultSet в виде JTable.
Я вижу это как:
Код

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select id, code, name, price from table");    
Object[][] data = null;
try
{
         int count = -1; 
         if (resultSet.last()) 
         count = resultSet.getRow(); 
         if (count == -1) { 
            data = new String[1][1]; 
             data[0][0] = "" + count; 
         } 
         else 
         {
             data = new String [count][4];
             resultSet.beforeFirst(); 
             for(int i=0; resultSet.next();i++ ) 
             { 
                 data[i][0]=resultSet.getString(0);
                 data[i][1]=resultSet.getString(1);
                 data[i][2]=resultSet.getString(2);
                 data[i][3]=resultSet.getString(3);
             }
         }
}
catch (SQLException e) 
{
}
final String[] colHeads = {"ID","Код","Товар","цена"};
JTable rep = new JTable(data,colHeads);

На выходе из блока try-catch массив data приходит пустым. Eclipse, по неясной мне причине, не позволяет мне прогнать дебаг внуттри try-catch.
Помогите пожалуйста найти ошибку.

Автор: frodo5 19.3.2009, 14:43
А зачем вам массив? Используйте обьект Вектор и добавляйте его в ДефаультТайблМодел

Добавлено через 14 минут и 15 секунд
Примерно так:
 
Код

DefaultTableModel dtm = jTable1.getDefaultTableModel();
int cc = rs.getmetadata().getColumnCount();
while (rs.next()) {
                Vector<Object> row = new Vector<Object>();
                for (int i = 0; i <= cc; i++)
                          row.add(rs.getObject(i));
                dtm.addRow(row);
}


Редактора нет под рукой, наверно с ошибками накидал

Автор: mbasil 19.3.2009, 16:17
А еще лучше выдерните исходный код "ДефаультТайблМодел" и напишите на его основе свой, работающий с ResultSet. Как то я такой фокус делал. Усилий больше, но эффективно.

Автор: frodo5 20.3.2009, 08:08
Цитата(mbasil @  19.3.2009,  16:17 Найти цитируемый пост)
Как то я такой фокус делал. Усилий больше, но эффективно. 


Ну так код в студию...

Автор: Viktorr 20.3.2009, 14:18
Огромное спасибо модераторам за перенос темы, нашел в парралельной темке рабочий код.
http://forum.vingrad.ru/topic-181475.html вот тут.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)