1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1651
1651
EMPFEHLEN
-
17.02.10 15:42 #1JavaBeginnerDeluxe Tutorials.de Gastzugang
Hallo,
ich wuerde gerne das Ergebnis einer SQL-Abfrage (ResultSet) als Textdatei abspeichern.
Diesbezueglich habe ich hier im Forum schon etwas aufgeschnappt, jedoch besteht da noch ein kleines Problem.
Nachdem die Textdatei abgespeichert wurde, sind im Text noch eckige Klammern ( - wegen der Array-Liste ?) zu sehen. Diese wuerde ich gerne loswerden.
Wahrscheinlich liegt es daran, dass ich auf dem Terminal, auf dem ich arbeite, nicht casten kann, weil die Java-Version veraltet ist (ArrayList<String>row = new <String> ArrayList() -->geht nur ohne <String> -Cast bei mir).
Ich waere euch sehr verbunden, wenn ihr mir weiterhelfen koenntet.
Hier das Code-Fragment, das ich mir zusammengebastelt habe :
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
import java.io.*; import java.sql.*; import java.util.*; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; public class ResultSetWriter { public static void main(String[] args) throws Exception { MysqlDataSource mds = new MysqlDataSource(); mds.setUser("x"); mds.setPassword("x"); mds.setServerName("x"); mds.setPort(x); mds.setDatabaseName("x"); Connection con = mds.getConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("Die SELECT-Abfrage"); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); List rows = new ArrayList(); while (rs.next()){ ArrayList row = new ArrayList(); for (int i = 1; i <= columnCount ; i++){ row.add(rs.getString(i)); } rows.add(row); } rs.close(); stmt.close(); con.close(); outputListToFile(rows, new File("Pfad zur Textdatei")); } private static void outputListToFile(List list, File file) { try { PrintWriter printWriter = new PrintWriter(new FileWriter(file)); Iterator iter = list.iterator(); while(iter.hasNext() ) { Object o = iter.next(); printWriter.println(o); } printWriter.close(); } catch (IOException e) { e.printStackTrace(); } } }
-
Ich habe mir deinen Code nicht genau angeschaut, weil er nicht in java-Tags eingeschlossen wurde. Trotzdem habe ich zu deinen Aussagen ein paar Bemerkungen zu machen, auch wenn ich nicht weiß, ob sie mit deinem eigentlichen Problem zu tun haben.
Das <String> ist kein Cast, sondern eine Typ-Angabe für eine generische Klasse; ein Cast hat runde Klammern. Dieses Feature objektorientierter Programmierung gibt es (erstaunlicherweise) erst seit Java5; ältere Java-Compiler geben dabei Fehlermeldungen aus. Wenn du also nur Java 1.4 oder eine noch ältere Version hast, solltest du am besten auf eine aktuelle Version upgraden. Außerdem heißt es nicht
sondernCode java:1
ArrayList<String>row = new <String> ArrayList();
Code java:1
ArrayList<String>row = new ArrayList<String>();
Wenn du einen Java-Compiler hast, der noch keine generischen Klassen unterstützt, musst du das von deiner ArrayList gelieferte Objekt erst in seine ursprüngliche Klasse zurückcasten; bei generischen Klassen brauchst du das nicht, weil deren Instanzen bei der Erzeugung für den angegebenen Datentyp spezialisiert sind und deswegen die Objekte auch direkt im richtigen Typ zurückliefern. Deine Ausgabeschleife sollte dann also folgendermaßen aussehen:
Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
19.02.10 12:19 #3JavaBeginnerDeluxe Tutorials.de GastzugangCode java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
import java.io.*; import java.sql.*; import java.util.*; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; public class ResultSetWriter { public static void main(String[] args) throws Exception { MysqlDataSource mds = new MysqlDataSource(); mds.setUser("x"); mds.setPassword("x"); mds.setServerName("x"); mds.setPort(x); mds.setDatabaseName("x"); Connection con = mds.getConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("Die SELECT-Abfrage"); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); List rows = new ArrayList(); while (rs.next()){ ArrayList row = new ArrayList(); for (int i = 1; i <= columnCount ; i++){ row.add(rs.getString(i)); } rows.add(row); } rs.close(); stmt.close(); con.close(); outputListToFile(rows, new File("Pfad zur Textdatei")); } private static void outputListToFile(List list, File file) { try { PrintWriter printWriter = new PrintWriter(new FileWriter(file)); Iterator iter = list.iterator(); while(iter.hasNext() ) { Object o = iter.next(); printWriter.println(o); } printWriter.close(); } catch (IOException e) { e.printStackTrace(); } } }
Danke fuer die Aufklaerung @ Vereth !
-
19.02.10 12:52 #4
Hier im Forum gibt es auch eine Danke Funktion.
Vereth freut sich sicherlich wenn du ihm auf diesem Wege dankst.
Oder geht das als Gast nicht?Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
Gruß Johannes
::: Homepage :::
Ähnliche Themen
-
Textdatei durchsuchen ausgeben
Von knibbel11 im Forum C/C++Antworten: 18Letzter Beitrag: 24.09.08, 11:50 -
Komplette Textdatei in PHP ausgeben
Von Cusco im Forum PHPAntworten: 8Letzter Beitrag: 10.10.07, 16:53 -
Textdatei ausgeben
Von desmina im Forum PHPAntworten: 1Letzter Beitrag: 28.07.06, 16:21 -
Textdatei mit C++ auf Logitech G15 LCD ausgeben
Von Niipy2 im Forum C/C++Antworten: 0Letzter Beitrag: 19.03.06, 23:11 -
Textdatei aus dem I-Net laden und ausgeben
Von ElFunghi im Forum Visual Basic 6.0Antworten: 19Letzter Beitrag: 29.11.02, 14:03





Zitieren

Login





