Mehrdimensionale ArrayList zu CSV exportieren
Hi =)
Ich habe mir eine Datenstruktur gebaut die eine Mehrdimensionale ArrayList befüllt.
Nun habe ich mich allerdings irgendwie mit der Logik verzettelt und komm nicht drauf wie ich das am besten in eine CSV-Datei ausgebe.
Größtes Problem dabei ist, die Mehrdimensionale ArrayList als String zu übergeben, da die "write"-Funktion vom BufferedWriter nichts anderes zulässt. Lustigerweise sagt er mir, wenn ich einen String übergeben will, dass der Wert ein Integer sein muss - was quatsch ist... Ich versteh es nicht wirklich
Aufgabe ist es, Daten aus einer Datenbank in einer bestimmten Form in eine CSV-Datei zu exportieren.
Das Programm befindet sich in der im Beispiel folgenden Form, noch im Anfangsstadium
Es wär super, wenn mir da jemand helfen könnte =)
Ich habe mir eine Datenstruktur gebaut die eine Mehrdimensionale ArrayList befüllt.
Nun habe ich mich allerdings irgendwie mit der Logik verzettelt und komm nicht drauf wie ich das am besten in eine CSV-Datei ausgebe.
Größtes Problem dabei ist, die Mehrdimensionale ArrayList als String zu übergeben, da die "write"-Funktion vom BufferedWriter nichts anderes zulässt. Lustigerweise sagt er mir, wenn ich einen String übergeben will, dass der Wert ein Integer sein muss - was quatsch ist... Ich versteh es nicht wirklich
Aufgabe ist es, Daten aus einer Datenbank in einer bestimmten Form in eine CSV-Datei zu exportieren.
Das Programm befindet sich in der im Beispiel folgenden Form, noch im Anfangsstadium
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
//import java.lang.Object;
//import com.csvreader.*;
public class Abfrage {
public static void main (String args) throws IOException{
String cmd = null;
int counter = 0;
Connection con1 = null;
List< List<String>> list1 = new ArrayList< List<String>>();
//Datenbank Treiber laden
try{
Class.forName("com.informix.jdbc.IfxDriver");
}catch(Exception e){
System.out.println("ERROR: failed to load Informix JDBC driver.");
}
//Datenbankzugang - qm_milch - URL - Connection
try{
con1 = DriverManager.getConnection("DATENBANK_URL");
con1.setReadOnly(true);
}catch(SQLException e){
System.out.println("Error: Failed to connect1\n" + e.getMessage());
}
/* //Datenbankzugang - vvvo - URL - Connection
try{
con2 = DriverManager.getConnection("DATENBANK_URL");
con2.setReadOnly(true);
}catch(SQLException e){
System.out.println("Error: Failed to connect2\n" );
e.printStackTrace(System.err);
}*/
//QM_milch Daten
try{
Statement stmt1 = con1.createStatement();
cmd= "qm_milch;";
ResultSet rs1 = stmt1.executeQuery("select name1, lief_nr, strasse, plz, ort, vvvo_nr from lieferanten");
String daten1;
daten1 = new String[9999];
FileWriter foutputstream = new FileWriter("lieferanten.csv");
BufferedWriter out1 = new BufferedWriter(foutputstream);
int columnCount = rs1.getMetaData().getColumnCount();
while(rs1.next()){
list1.add(new ArrayList<String>());
for(int i=0; i < rs1.getMetaData().getColumnCount(); i++){
String strtmp = rs1.getString(i+1);
if (strtmp != null) {
strtmp = strtmp.trim();
}
list1.get(counter).add(strtmp);
if (list1.get(counter).get(i) != null) {
System.out.printf("%40s", list1.get(counter).get(i));
}
}
System.out.println();
counter++;
}
out1.close();
con1.close();
rs1.close();
stmt1.close();
}catch(SQLException e){
System.err.println("ERROR: execution failed - statement " + cmd);
System.err.println("ERROR: " + e.getMessage());
e.printStackTrace(System.err);
}
}
}
Es wär super, wenn mir da jemand helfen könnte =)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 274120
Url: https://administrator.de/contentid/274120
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo KayManHey,
ich habe Deinen Quelltext nicht analysiert sondern mir nur mal die Doku zur
Die
Deswegen auch die Fehlermeldung, dass ein
Du musst zum Schreiben eines Strings stattdessen die folgende Überladung verwenden:
Siehe auch die Doku zur
Gruß
Friemler
ich habe Deinen Quelltext nicht analysiert sondern mir nur mal die Doku zur
BufferedWriter
-Klasse angeschaut.Die
write
-Methode der BufferedWriter
-Klasse ist überladen. Wenn Du nur EIN Argument übergibst, sieht das für den Compiler so aus, als ob Du folgende Überladung verwenden möchtest:write(int c)
int
-Argument erwartet wird.Du musst zum Schreiben eines Strings stattdessen die folgende Überladung verwenden:
write(String s, int off, int len)
Siehe auch die Doku zur
BufferedWriter
-Klasse.Gruß
Friemler