Einfügen Ergebnismenge, die in Arraylist und anzeigen
Habe ich schwierig, die Speicherung mehrerer Resultsets in eine ArrayList. Auch ich brauchen, um Sie anzuzeigen in einem JTextArea. Aber das problem ist, ich kann Sie nicht anzeigen, nichts.
public static ArrayList<Wall> getWallPosts(int postId){
ArrayList<Wall> postList = new ArrayList<Wall>();
ResultSet rs = null;
DBController db = new DBController();
db.setUp("myDatabase");
String dbQuery = "SELECT Id FROM Wall WHERE ID ="+postId;
rs = db.readRequest(dbQuery);
try{
while (rs.next()){
int wallId = rs.getInt("Id");
String wallPoster = rs.getString("Poster");
String wallPost = rs.getString("Post");
String wallDate = rs.getString("Tdate");
Wall w1 = new Wall(wallPoster, wallPost , wallDate);
postList.add(w1);
}
}
catch (Exception e) {
e.printStackTrace();
}
db.terminate();
return postList;
}
//The method for displaying the result sets
public void retrieveCategoryQuestionList() {
//get the list and store in array
ArrayList<Wall> aList = Wall.getWallPosts(id);
for(id = 1; id<aList.size();id++)
jTextAreaWall.append(w2.getPost());
}
Felder in die Datenbank-Id, Poster, Post, Tdate
- Für zukünftige Referenz, beachten Sie, dass Ihre Frage nicht genau sagen, was falsch ist - sagen Sie einfach "ich kann nicht ankommen es zu zeigen alles", und nach ein Stück code. (Dies ist besonders schlimm, weil in dieser situation müssen Sie immer eine Ausnahme, die Auflistung und der stacktrace wäre viel geholfen). Weiter Lesen.
- Ok, das problem ist, wenn ich führen Sie die Methode unten, es läuft einfach DB-Abfrage: SELECT * FROM Wand, WO die ID =0. Ich habe verändert die codes nach, was Sie sagte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der SQL-Abfrage:
Wählen Sie nur die
Id
vom Tisch ab, während Sie erwarten, dassId
,Poster
,Post
undTdate
anwesend zu sein, wie pro IhreResultSet#getString()
Anrufe.Müssen Sie diese Spalten in der SQL-Abfrage als auch:
Siehe auch:
Unabhängig von dem konkreten problem, ich würde vorschlagen, zu familarize sich mit
PreparedStatement
da, das ist die eine, die verhindert, dass SQL-injection-Angriffe.Update: gemäß dem Kommentar auf deine eigene Frage, wenn Ihre Absicht ist, um ALLE Zeilen anzuzeigen, dann sollten Sie einfach nicht hinzufügen, eine restriktive
WHERE
- Klausel, auch nicht mit einerId=0
, das wäre nur die Suche nach passenden SätzeId=0
. Nur das auslassen derWHERE
.Wieder einmal, empfehle ich, sich selbst durch eine einfache SQL-tutorial. Dieses Problem hat im Grunde nicht viel zu tun mit Java/JDBC. Abgesehen von ein paar ernsthafte design-Probleme, es sollte nur funktionieren.
e.printStackTrace();
ist wirklich schlecht und verdeckt alle Probleme dieser Art auf. DB-Zugriff auf Methoden sollte immer eine eindeutige Art und Weise der Signalisierung der Fehler (ideal propagieren, etwas Ausnahme, es sei denn in sehr begrenztem Umfang)!finally
. An den OP: hier können Sie diesem Artikel nützlich dann um neue Erkenntnisse zu gewinnen.Ich weiß nicht, über andere Fehler sein könnte, es sieht ok für mich, nur, dass
String dbQuery = "SELECT Id FROM Wall WHERE ID ="+postId;
Werden sollte: