# DB auslesen und in ein JTextArea schreiben



## Gast (11. Jan 2007)

Guten Abend,
ich habe eine JTextArea, die den Text aus einer Datenbank annehmen soll. 

Die DB ist wie folgt aufgebaut:

Index | Text
1 | "Text1"
2 | "Text2"
3 | "Text3"
...

Das soll so in der JTextArea ausgegeben werden.

1: Text1
2: Text2
...

Mir fällt aber kein Weg ein, wie ich nur den neu dazugekommenen Text auslesen kann (Also nur den der noch nicht in der TextArea steht).

Jetzt habe ich mir gedacht, löschst du einfach den bestehenden Text und ließt die komplette DB aus und schreibt den gesamten Inhalt rein, aber pustekuchen.


```
...String SQL = "SELECT * FROM shoutbox";
				
				try {
					res = state.executeQuery(SQL);
					
					while(res.next()){
						int Index = res.getInt("Index");
						String Text = res.getString("Text");
						
						String ContainerText = container.getText();
						container.setText("");
						
						container.setText(Index +": "+Text);
					}...
```

Was mache ich falsch und wie könnte ich das lösen?


----------



## SlaterB (11. Jan 2007)

> Was mache ich falsch

du sagst nicht was das Problem ist,
die Pustekuchen-Idee klingt gar nicht schlecht

oder erstmal halt:
geht es um genau einen Lesevorgang und die Frage, wie du alle Zeilen zusammen ausgibst,
(eine while-Schleife)

oder geht es dir darum, eine frühere Anzeige von 10 Zeilen um die in der Zwischenzeit dazugekommenen 2 neuen Zeilen zu ergänzen?

----------

auf jeden Fall solltest du die Pustekuchen-Idee als erstes umsetzen,
dazu in der while-Schleife noch gar nicht an einen Container denken,
sondern nur einen großen String zusammenbauen

String zeile = ..;
gesamtString += zeile +"\n";


----------



## JAVAn00b (12. Jan 2007)

Hi,

du hast ein kleines Problem 


```
container.setText(Index +": "+Text);
```

was machst du wenn mehr als 1 result set kommt? dann überschreibt er immer den text inhalt. wenn dann überhaupt
textArea.append(Index + ": " + Text);

Aber wenn du ne Tabelle anzeigen willst, warum benutzt du dann nicht JTable? das ist sieht am besten aus und am einfachsten. du mußt nichts formatrieren.


----------



## Gast (12. Jan 2007)

Danke schonmal,



> oder geht es dir darum, eine frühere Anzeige von 10 Zeilen um die in der Zwischenzeit dazugekommenen 2 neuen Zeilen zu ergänzen?



Genau darum geht es mir, sry wenn ich mich schlecht ausgedrückt habe.  :wink: 



> auf jeden Fall solltest du die Pustekuchen-Idee als erstes umsetzen,
> dazu in der while-Schleife noch gar nicht an einen Container denken,
> sondern nur einen großen String zusammenbauen
> 
> ...



Das habe ich mir auch schon gedacht, aber mir fällt kein Weg ein, die Area anschließend zu leeren. Da das doch eigentlich mit setText(""); gehen sollte.



> was machst du wenn mehr als 1 result set kommt? dann überschreibt er immer den text inhalt. wenn dann überhaupt
> textArea.append(Index + ": " + Text);



Merkwürdig, bei mir wurde auch mit setText hinten angehängt, aber prinzipiel hast du recht.



> Aber wenn du ne Tabelle anzeigen willst, warum benutzt du dann nicht JTable? das ist sieht am besten aus und am einfachsten. du mußt nichts formatrieren.



Schon, aber ich wollte eine ähnliche Oberfläche wie bei einem Chat oder einer shoutbox und da bietet sich JTextArea gut an.


----------

