rendered paste bodyimport java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.StringTokenizer;/** * Diese Klasse lädt den CSV-Inhalt in die Accessdb via SQL. * */public class UpdateKundenwunsch { private Connection con; private BufferedReader br; private static final ArrayList<String> SPALTEN_NAMEN; // TODO pfad zur mdb datei (mit / anstatt von \ private static final String ACCESS_PFAD = "C:/Programme/Siemens/WinCC/Projekte/Staack080108/Archivierung/Staack.mdb"; // TODO pfad zur csv datei (mit / anstatt von \ private static final String DATEI_PFAD = "C:/Programme/Siemens/WinCC/Projekte/Staack080108/ua/Staack.csv"; // TODO tabellenname private static final String TABELLEN_NAME = "Staack_Archiv"; // TODO simulation: true oder false private static final boolean SIMULATION = true; static { // / TODO anpassen!!! muss die gleiche reihenfolge haben wie die felder // in der csvdatei geliefert werden!!! SPALTEN_NAMEN = new ArrayList<String>(); SPALTEN_NAMEN.add("laufende Nummer"); SPALTEN_NAMEN.add("Auftragsnummer"); SPALTEN_NAMEN.add("Kunde"); SPALTEN_NAMEN.add("Ladung"); } public static void main(String[] args) throws Exception { new UpdateKundenwunsch().start(); } public void start() throws Exception { try { File eingabedatei; FileReader fr; try { eingabedatei = new File(DATEI_PFAD); fr = new FileReader(eingabedatei); br = new BufferedReader(fr); System.out.println(eingabedatei.canRead()); } catch (FileNotFoundException fnfe) { System.out.println("Dateipfad stimmt nicht. Dateipfad: " + DATEI_PFAD); throw fnfe; } } catch (Exception e) { throw e; } try { openSql(); } catch (Exception e) { throw e; } finally { closeFile(); closeSql(); } //String zeile = leseZeile(); String zeile; while ((zeile = br.readLine()) != null) { ArrayList<String> list = new MyTokenizer(zeile, ";", SPALTEN_NAMEN.size()).getArrayList(); executeInsert(list); System.out.println("verarbeitet"); } closeFile(); closeSql(); } private void closeFile() throws Exception { br.close(); } private void openSql() throws ClassNotFoundException, SQLException { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + ACCESS_PFAD); } /** * SQL-Statement zusammenbauen und absetzen * * @param list * @throws Exception */ private void executeInsert(ArrayList<String> list) throws Exception { StringBuilder sb = new StringBuilder("INSERT into "); sb.append(TABELLEN_NAME); sb.append(" ("); for (int i = 0; i < SPALTEN_NAMEN.size(); i++) { sb.append(SPALTEN_NAMEN.get(i)); sb.append(", "); } sb.append(") VALUES ("); for (int j = 0; j < list.size(); j++) { sb.append("'"); sb.append(list.get(j)); sb.append("' , "); } if (SIMULATION) { System.out.println(sb.toString()); } else { Statement stmt = con.createStatement(); stmt.executeUpdate((sb.toString())); stmt.close(); } } /** * SQL-Verbindung schlieÃYen * * @throws Exception */ private void closeSql() throws Exception { con.close(); } // diese Klasse kümmert sich um das Zerlegen der Eingabezeile class MyTokenizer { private StringTokenizer tokenizer; private int anzahl; private String trennzeichen; public MyTokenizer(String zeile, String trennzeichen, int anzahl) { tokenizer = new StringTokenizer(zeile, trennzeichen, true); this.anzahl = anzahl; this.trennzeichen = trennzeichen; } public ArrayList<String> getArrayList() throws Exception { ArrayList<String> list = new ArrayList<String>(); for (int i = 0; i < anzahl; i++) { String t1; t1 = tokenizer.nextToken(); if (t1.equals(trennzeichen)) { throw new Exception( "Es existieren in der CSV-Datei zwei aufeinanderfolgende " + trennzeichen); } // nächstes Trennzeichen überlesen, auÃYer beim letzten, da gibts // keins mehr if (i != anzahl - 1) { tokenizer.nextToken(); } } return list; } }}