All pastes #939720 Raw Edit

Vermischtes

public java v1 · immutable
·published 2008-03-12 15:03 UTC
rendered paste body
import 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 {  openFile(); } catch (Exception e) {  throw e; } try {  openSql(); } catch (Exception e) {  closeFile();  throw e; }             //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 openFile() throws Exception {  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;  } } private void closeFile() throws Exception {  br.close(); } private String leseZeile() throws Exception {  return br.readLine(); } 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;  } }}