Заполнить таблицу из базы данных - PullRequest
0 голосов
/ 01 июля 2011

Я пытаюсь получить строки из базы данных и заполнить таблицу. Я не понимаю, где проблема с этим кодом:

if ((report.getMsg()=="selectEventoAll") && (report.getEsito()==1))
{

    DefaultTableModel dtm = new DefaultTableModel();
    eventi_tb.setModel(dtm);

    try
    {
        ResultSet res_eventi = report.getRes();
        i = 0;
        Object[][] datiEventi = new Object[report.getRowCount()][5];

        while(res_eventi.next())
        {
           j = 0; 
           while (j < 5)
           {
              datiEventi[i][j] = res_eventi.getObject(j+2);
              j++;
           }
           dtm.addRow(datiEventi[i]);
           i++;
        }
    }

Ответы [ 2 ]

4 голосов
/ 01 июля 2011

Это плохой дизайн. Вы смешиваете свой интерфейс и базу данных вместе. Ваш код не годится, если вы переходите с Swing на веб-интерфейс. Сложнее тестировать и отлаживать так же.

Разбейте проблему на две части: доступ к базе данных и отображение Swing.

Иметь один объект, который ничего не делает, кроме запроса результатов, и загружать их в структуру данных.

Есть другой, который ничего не делает, кроме как принимает структуру данных и загружает ее в пользовательский интерфейс Swing для отображения.

В вашем приложении база данных будет отделена от интерфейса пользователя. Ваша жизнь в тестировании и отладке будет проще.

Опубликуйте больше кода и, возможно, сообщение об ошибке поможет нам помочь вам быстрее, чем угадывать.

Цикл по столбцам в наборе результатов кажется мне подозрительным. Они бегут от 1 до количества столбцов, но вы начинаете с 2. Почему? Если в вашем запросе пять или меньше столбцов, у вас возникнет проблема.

1 голос
/ 02 июля 2011

Вы уверены, что ваш ResultSet содержит какие-либо строки?

Вы уверены, что какое-то исключение не происходит до вызова addRow?Вы находитесь в блоке try, что делает блок catch?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...