Zugriff auf MS-Access-DB ist grottenlangsam. Normal?

Status
Nicht offen für weitere Antworten.

thomwer

Mitglied
Hallo,

ich fange grad mit Java an und komme von VB. Jetzt muss ich aus einer MS-Access-Tabelle mit ca. 500.000 einen Recordset mit ca. 20.000 Datensätzen erstellen und diese Datensätze in ein Array einlesen.

Mit VB und ADO dauert das unter 1 Sekunde, mit Java eine halbe Minute. Warum dauert das mit JDBC so lange? Ich vermute das es daran liegt, dass ich über ODBC die Access-Datei öffne. Meint ihr das ist richtig? Gibt es eine Möglichkeit die Daten schneller zu bekommen?

Wäre sehr dankbar für Eure Hilfe.
 
R

Roar

Gast
wenn
> ich fange grad mit Java an
ist vielleicht auch einfach dein code nur mist ???:L
den müsstest du aber zeigen
 

trazzag

Bekanntes Mitglied
Habe bisher noch keine wirklichen Geschwindigkeitsprobleme bei der Verarbeitung von Acces-DBs gehabt. Wie Roar schon sagte, einfach mal Code posten!
 

thomwer

Mitglied
Schon mal vielen Dank für Eure Antwort.

Hier ist der Code:

Code:
		Connection con=null;
		Statement stmt=null;

		try
		{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection("jdbc:odbc:DBAktie");

			stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
			rsData=stmt.executeQuery("SELECT datum,open,high,low,close,volume,openinterest FROM kurs WHERE internid='"+pInternId+"' ORDER BY datum");
			
			System.out.println("Start DB-Abfrage");
			String name;
			
			rsData.last();
			float hlpClose[] = new float[rsData.getRow()];
			rsData.first();
			int t=0;
			while (rsData.next())
			{
				hlpClose[t]=rsData.getFloat(5);
				t++;
			}
			System.out.println("Ende DB-Abfrage");
		}
		catch(Exception ex)
		{
			System.out.println("Exception:"+ex.getMessage());
		}

Wie gesagt, es kommen ca. 20.000 Datensätze zurück, und die ganze Aktion dauert ca. 30 Sekunden. Und das gleiche in VB mit Ado dauert nicht mal 1 Sekunde.

Hat vieleicht jemand einen Tipp zur optimierung?
 
G

Guest

Gast
Optimierungsvorschlag hab ich so auf Anhieb nicht, aber wenn ich mich nicht irre, hast du einen kleinen Fehler in deinem Code:

Code:
rsData.first(); 
         int t=0; 
         while (rsData.next()) 
         { 
            hlpClose[t]=rsData.getFloat(5); 
            t++; 
         }

So wird dir vermutlich der erste Datensatz fehlen. Versuch's mal mit
Code:
rsData.beforeFirst();

...und wozu du
Code:
String name;
brauchst, ist mir nicht so ganz klar, aber das hat ja nicht wirklich was mit deinem Problem zu tun.

Ich hab mal ein Programm entwickelt, in dem ich relativ ähnlich eine Access-DB auslese. Da waren es allerdings nur so um die 6000 Datensätze. Dauerte aber unter eine Sekunde.
Hab's damals über
Code:
while (resultSet.isLast() == false) {
resultSet.next();
...
...
}
implementiert; aber ich kann mir nicht vorstellen, daß da der Geschwindigkeitsunterschied herrührt...?!?
 

thomwer

Mitglied
Danke für Deine Antwort. Immerhin hat's mich motiviert noch mal das eine oder andere auszuprobieren. und siehe da, ich bin etwas weiter gekommen.

Habe

stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

durch

stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ersetzt, und jetzt ist das ganze so schnell wie in VB :)
 

thomwer

Mitglied
sorry, ich meinte andersherum:

Habe

stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

durch

stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

ersetzt !
 

trazzag

Bekanntes Mitglied
*kopfkratz*
Also, guck ich nicht richtig, oder war die Zeile
Code:
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
nicht auch schon in deinem obigen Code vorhanden? ;-)
Der Gast-Post eben war übrigens ich (muß mich hier auf Arbeit immer wieder neu anmelden *grummel*).

EDIT: oh, da warste schneller :)
 

AlArenal

Top Contributor
Macht es eigentlich Sinn 7 Spalten zu selektieren und nur einen Wert daraus zu verwenden?

Kleiner Tipp:
Die Frage ist rhetorisch! ;)
 

thomwer

Mitglied
Macht es eigentlich Sinn 7 Spalten zu selektieren und nur einen Wert daraus zu verwenden?

Nee, natürlich nicht. Die anderen Spalten werden auch benötigt, aber ich hab den Code hier im Posting etwas abgekürzt und auf das eigentliche Problem begrenzt. Muss sich ja nicht jeder durch den ganzen kram wursteln :)

Jedenfalls scheint es am Cursor-Typ zu liegen, jetzt funktioniert es in menschenwürdiger Performance.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S HSQLDB Zugriff auf Access Datenbank Datenbankprogrammierung 0
F Zugriff auf MS Access-Datenbank mit jackcess Datenbankprogrammierung 10
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7
N Wie kann ich Zugriff auf eine MS Access DB (mit JDBC) über Netzwerk erreichen? Datenbankprogrammierung 7
F Zugriff auf MS Access DB Datenbankprogrammierung 3
J Zugriff auf Access-Datenbank Datenbankprogrammierung 3
J Java DB Zugriff auf Access (Migration auf andere DB) Datenbankprogrammierung 8
S Zugriff auf eine große Datenmenge von MS Access per JDBC Datenbankprogrammierung 11
G Access Zugriff, DB auf Server, Applet Datenbankprogrammierung 4
C Zugriff auf MS Access Datenbankprogrammierung 4
K Zugriff auf Access-Datenbank Datenbankprogrammierung 4
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
L Zugriff auf ein Resultset Datenbankprogrammierung 7
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
D Gleichzeitiger Zugriff auf der DB Datenbankprogrammierung 11
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
D JavaFX Anwendung zugriff auf MySQL DB. Datenbankprogrammierung 2
F Zugriff auf ein bestimmte Row Datenbankprogrammierung 13
K MySQL Datenbank 2facher Zugriff Datenbankprogrammierung 1
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
P Datenbank Zugriff fehlgeschlagen Datenbankprogrammierung 9
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
L Zugriff auf lokal gespeicherte mySQL Datenbank Datenbankprogrammierung 3
L MySQL App/Java Zugriff auf Mysql-DB funktioniert nicht Datenbankprogrammierung 1
W MySQL -Server Einstellung -- Zugriff übers lokale Netzwerk Datenbankprogrammierung 1
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T Derby/JavaDB Zugriff auf DB mit exportiertem Programm Datenbankprogrammierung 12
A MySQL-Zugriff auf Raspberry Pi Datenbankprogrammierung 2
T PostgreSQL Best Practice: Konkurrierender DB-Zugriff mit meherern Programmen? Datenbankprogrammierung 20
D .mdb Datenbank Zugriff fehlgeschlagen Datenbankprogrammierung 5
B Datenbanken schützen vor Zugriff Datenbankprogrammierung 3
E Zugriff auf MySQL-Datenbank Datenbankprogrammierung 4
K MySQL Zugriff auf Remote-DB verweigert Datenbankprogrammierung 6
G MySQL Zugriff auf Datenbank Objekt Datenbankprogrammierung 19
C Hibernate n:m mittels Zwischentabelle und bidirektionaler Zugriff Datenbankprogrammierung 2
M Zugriff auf mdb via ODBC steuern Datenbankprogrammierung 2
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
D Was passiert bei absolut zeitgleichem Zugriff auf eine Tablerow Datenbankprogrammierung 7
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
I Zugriff auf eine Datenbank auf dem Webserver Datenbankprogrammierung 2
J Derby/JavaDB Zugriff ohne Entwicklungsumgebung Datenbankprogrammierung 5
E H2 - Globalen Zugriff auf die Datenbank? Datenbankprogrammierung 10
J Zugriff auf MySQL-Datenbank Datenbankprogrammierung 5
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
E einfache Frage bei DB-Zugriff Datenbankprogrammierung 11
P MySQL Remote Zugriff Datenbankprogrammierung 2
C Gleichzeitiger Zugriff auf Datensatz Datenbankprogrammierung 5
T MySQL Zugriff ohne Angabe der Datenbank Datenbankprogrammierung 3
J Frage zu Synchronisation bei parallelem Zugriff, speziell mit JPA Datenbankprogrammierung 2
T DB Zugriff mit Java Web Datenbankprogrammierung 6
R Zugriff auf SQL im PreparedStatement Datenbankprogrammierung 4
J Nullpointer Exception bei Zugriff auf Datenbank Datenbankprogrammierung 13
A Zugriff auf Remote MySQL-DB mit JAR-File Datenbankprogrammierung 7
R Java DB Zugriff Datenbankprogrammierung 2
T Zugriff auf Derby-Datenbank will einfach nicht klappen Datenbankprogrammierung 22
G Zugriff auf Datenbank im Internet Datenbankprogrammierung 6
G treiber für datenbank zugriff Datenbankprogrammierung 3
L Datenbank URL Zugriff Datenbankprogrammierung 9
G Wie baut man eine Anwendung mit DB Zugriff Datenbankprogrammierung 3
QDog JPA persistence.xml auslagern/extern Zugriff Datenbankprogrammierung 2
A HSQLDB Performance bei erstem Zugriff Datenbankprogrammierung 6
S Datenbank zugriff optimieren - zugriff ohne cursor? Datenbankprogrammierung 7
A Zugriff auf DB-Pool, der von Servlet initialisiert wurde Datenbankprogrammierung 4
J MYSQL-Zugriff mittels einer Java-Bean Datenbankprogrammierung 42
M mySQL zugriff funktionert nach ca4 stündiger laufzeit nicht Datenbankprogrammierung 6
J Zugriff mit DataSource Datenbankprogrammierung 7
M Zugriff für andere sperren Datenbankprogrammierung 11
K Zugriff mittels JDBC funktioniert nur lokal Datenbankprogrammierung 5
G Hibernate Zugriff Datenbankprogrammierung 5
E JDBC Oracle Fehler, zugriff auf datenbank (Cluster) Datenbankprogrammierung 5
D ODBC Zugriff auf MDB-Datenbank, Insert Into ohne Funktion Datenbankprogrammierung 2
G Verwendung neuen Treiber für JDBC-Zugriff auf OracleDB Datenbankprogrammierung 5
D Problem beim Zugriff auf eine Oracle-DB Datenbankprogrammierung 23
D Kann nicht auf MySQL Datenbank Zugriff Datenbankprogrammierung 9
G Policy Eintrag für SQL Zugriff im Netzwerk Datenbankprogrammierung 10
S Java SQL-Exception bei Zugriff auf MSAccess Datenbankprogrammierung 2
S JDBC Zugriff auf SQLServer Datenbankprogrammierung 9
D Datenbank zugriff über Client/Server Datenbankprogrammierung 4
M Zugriff auf PostgreSQL mit JAva! Datenbankprogrammierung 7
F Zugriff auf ODBC-Datenbank übers Netzwerk Datenbankprogrammierung 6
G Problem beim Zugriff SQL 2000 Datenbankprogrammierung 2
T Verwaltungsystem mit grafischer Oberfläche mit Zugriff auf. Datenbankprogrammierung 6
D Zugriff auf Paradox-Datenbank Datenbankprogrammierung 10
B ResultSet aus Session geladen, aber kein Zugriff möglich Datenbankprogrammierung 6
D HSQLDB Datenbank Zugriff! Datenbankprogrammierung 4
L Programm-Architektur bei DB-Zugriff Datenbankprogrammierung 6
R Zugriff auf MySQL-Datenbank im Internet Datenbankprogrammierung 13
L Zugriff von Applet auf mysql-DB Datenbankprogrammierung 2
R Datenbank zugriff funktioniert nur offline Datenbankprogrammierung 2
G Fehlermeldung beim Zugriff auf SQL-Server-DB Datenbankprogrammierung 3
D Mysql zugriff aus java nicht moeglich Datenbankprogrammierung 2
Tom#234 Jakarta Web Service SQL Access Error Datenbankprogrammierung 7
H Datenbankverbindung zu MS Access Datenbankprogrammierung 4
G Connect zu ACCESS-DB mit Ucanaccess Datenbankprogrammierung 11
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0

Ähnliche Java Themen

Neue Themen


Oben