2013-12-13 2 views
0

Я работаю над приложением, которое выводит результаты SQL-запроса в JTextArea. Работа с базой данных и работа с запросами, и я могу показать результаты в консоли и в текстовой области, единственная проблема: текстовая область показывает только одну запись, а консоль показывает все результаты.Swing app.only показывает одну запись в JTextArea

Вот мой код для вывода набора результатов в консоли и в текстовой области. Как изменить часть текстовой области, чтобы показать все значения набора результатов?

Statement stat = con.createStatement();   
ResultSet result = stat.executeQuery("SELECT DISTINCT rnaam, gesl FROM dier, soort  WHERE soort.nsnaam = 'leeuw' ORDER BY rnaam ASC"); 

while(result.next()) 
{ 
    // The console print 
    System.out.println(result.getString(1)); 

    // The frame print 
    uitvoerText.setText(result.getString(1)); 
} 

Так в чем проблема с моим кодом или, как я могу просто отобразить все результаты? Я знаю, что это возможно с помощью метода модели (ModelItem), но я должен сделать это с помощью текстовой области (школы ...). И я знаю, что должен использовать подготовленные заявления, но мы этого не делаем прямо сейчас.

+0

только добавить тег Netbeans, если речь идет о Netbeans. Очевидно, этого нет. –

ответ

3

Потому что setText() устанавливает текстовую область в заданный текст, заменяя все, что уже есть. То, что вы хотите, это append(), который добавляет данный текст в конец текущего.

uitvoerText.append(result.getString(1) + System.lineSeparator()); 

Это все в docs

+0

Какой метод позволит мне печатать все записи? Потому что упражнение ясно говорит «все строки в JTextArea». – user2793161

+0

'append()', возможно, с '' \ n "' (или платформой независимый 'System.lineSeparator()') в конце вашей 'String', чтобы убедиться, что каждая запись находится в собственной строке –

+1

Спасибо! Он отлично работает :) – user2793161

3

Это будет работать

StringBuilder text=new StringBuilder(); 
    while(result.next()) 
    { 
     // The console print 
     System.out.println(result.getString(1)); 
     //save it in stringBuilder 
     text.append(result.getString(1)+System.lineSeparator()); 

    } 
     uitvoerText.setText(text.toString()); 
+0

Почему все это не просто добавляется к 'JTextArea'? –

+1

@RossDrew: JtextArea также использует внутреннюю (не точную) логику внутри API append. – Sach

+0

Правда, так зачем повторять код? –

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