Hallo.
Ich würde gern bei einer Access Tabelle die Doppelten Einträge mit einem X Makieren. Das Problem ist sobalt ich eine Tabelle nehme die mehr wie 5000 Einträger hat, schmiert mein Programm ab und ich bekomme die Fehlermeldung "Das objekt ist ungültig, oder es ist nicht mehr festgelegt" oder aber auch "Zusätzliche Tabellen können nicht geöffnet werden".
Zum besseren Verständis mein Quellcode und ich benutze Access 2000 ich hoffe ihr könnt mir weiter helfen ich freu mich auf jede Antwort.
MFG
Ich würde gern bei einer Access Tabelle die Doppelten Einträge mit einem X Makieren. Das Problem ist sobalt ich eine Tabelle nehme die mehr wie 5000 Einträger hat, schmiert mein Programm ab und ich bekomme die Fehlermeldung "Das objekt ist ungültig, oder es ist nicht mehr festgelegt" oder aber auch "Zusätzliche Tabellen können nicht geöffnet werden".
Zum besseren Verständis mein Quellcode und ich benutze Access 2000 ich hoffe ihr könnt mir weiter helfen ich freu mich auf jede Antwort.
MFG
Code:
package test;
import java.sql.BatchUpdateException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.Date;
/**
* @author Chris
*
*/
public class Access2 {
public static void main(String[] args) throws BatchUpdateException{
int i,anzahl;
i=0;
Connection con = null;
String name,plz,ort,info;
try {
//laden des JDBC Treibers
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dbpath = "E:/db1.mdb";
con = DriverManager
.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ="
+ dbpath);
System.out.println(DateFormat.getTimeInstance().format(new Date()));
PreparedStatement pstmt;
pstmt= con
.prepareStatement("Select Dopplung, Betriebsname,PLZ,ort,Str,vorwahl,telefon from tabelle2 ");
ResultSet rs,rs2 = null;
rs= pstmt.executeQuery();
//Auslesen der Excel Datei und in ArrayList hinzufügen
while(rs.next()){
name = rs.getString(2);
plz = rs.getString(3);
ort = rs.getString(4);
pstmt = con.prepareStatement("Select Count(*) from tabelle2 where Betriebsname like ? and plz = ? and ort like ?");
pstmt.setString(1, "%"+name+"%");
pstmt.setString(2, plz);
pstmt.setString(3, "%"+ort+"%");
rs2=pstmt.executeQuery();
while(rs2.next()){
info = rs2.getString(1);
anzahl =Integer.parseInt(info);
if(anzahl>1){
System.out.println("Update "+name+"--"+plz);
pstmt = con.prepareStatement("Update tabelle2 Set Dopplung='x' where Betriebsname like ? and plz = ? and ort like ?;");
pstmt.setString(1, "%"+name+"%");
pstmt.setString(2, plz);
pstmt.setString(3, "%"+ort+"%");
pstmt.addBatch();
i++;
}
pstmt.executeBatch();
}
}
System.out.println("Anzahl Dopplungen: "+i);
pstmt.close();
con.close();
System.out.println(DateFormat.getTimeInstance().format(new Date()));
} catch (SQLException e) {
System.out.println("Anzahl Dopplungen: "+i);
System.out.println("Fehler "+e.getMessage());
System.out.println("Fehler1 "+e.getErrorCode());
System.out.println("Fehler2 "+e.getSQLState());
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
}