PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JAVA - Microsoft Access



Franky
18-06-2001, 11:17
ich fuege mit einem JAVA-Programm Datensaetze in verschiedene Tabellen einer Access Datenbank ein. Alles funktioniert super, nur ab einer bestimmten Anzahl von Datensaetzen erhalte ich folgende Fehlermeldung:

Can't open any more tables

Ist in Access das schreiben in DB's beschraenkt?
Bitte keine Hinweise wie sch... Access. Ich moechte das Problem so!!! loesen.
Hat jemand Erfahrung damit, auch wenn es keine Oracle oder Mysql Db ist?

thanks

freue mich ueber regen erfahrungsaustausch!nullnull

Martin Ament
18-06-2001, 11:45
Hi,

ich hoffe mal, dass niemand hier in Bezug auf irgendwelche DBs oder Betriebssysteme mit Grundsatzdiskussionen anfangen will.

Bin zwar kein Accesskenner, aber ich würde mal ansetzen:

a) gibt es eine Beschränkung der gleichzeitig geöffneten Datensätze, vom Treiber (jdbc nehme ich an) oder von der DB her ?

b) ist eine arrayverarbeitung möglich, speichern nach jedem 10, 20 oder 50 Datensatz

c) liegt es am Speicher, der dem Treiber zur Verfügung steht ?

Gruss Martin

Franky
18-06-2001, 13:45
hallo martin,

ob eine beschraenkung existiert, weiss ich micht. jdbc-odbc MaxBufferSize-werte habe ich bereits veraendert, aber keine verbesserung festgestellt.16384 ist eingestellt.

in der hilfe von access kann ich irgendeine tabellenbeschraenkung nicht finden.

ab ca. 500 insert einfuegungen kriege ich diese fehlermeldung. kenne mich mit odbc zu wenig aus, als das ich ursachen finden kann.

was meinst du mit speichern nach jedem 10. usw. Datensatz?

habe mein prog nach fehlern wie schliessen von datenstroemen durchsucht, und nichts gefunden, aber oftmals ist man schon betriebsblind und uebersieht irgendetwas. kann es an so etwas liegen?

gruss frank

Martin Ament
18-06-2001, 15:02
Hi,

DBMS arbeiten oftmals mit einem before- und after image.

D.h. wenn du eine Veränderung der Daten vornimmst, so änderst du immer an einem Spiegel der Daten. Erst wenn du mit dem Ändern fertig bist, und eine Speicherung ausgelöst wird, dann wird der Spiegel über die "originaldaten"(before-image) geschrieben. Geht was schief, so verlierst du die änderungen, aber die daten bleiben konsistent.

Was ich meine ist nun dies, dass einfach dein spiegel zu gross wird, und der Platz (wo auch immer) nicht ausreicht. Dieses kann man umgehen, indem man in regelmässigen abstaenden speichert, da dann der spiegel wieder von neuem aufgebaut wird. Macht das ganze zwar langsamer, aber auch sicherer.
Das meinte ich mit Speichern nach jedem x-ten Datensatz.

Arrayverarbeitung weiss ich nicht, ob das mit odbc geht, es hat halt den Vorteil, dass gleich mehrere Datensätze als ein block betrachtet werden, was der Geschwindigkeit zuträglich ist.

Martin

Franky
18-06-2001, 15:53
hallo,

an diesem spiegel kann es liegen. es gehen naemlich keine vorhandenen daten verloren. die einzufuegenden schreibt er bis zu einer gewissen "stelle" und dann bricht er ab. wie kann ich ihn explizit zum speichern zwingen? welche methoden unter java verwendet man da?

thanks

Martin Ament
18-06-2001, 17:41
Hi,

an dieser Stelle muss ich passen,
in sql ist der Befehl:
commit;

aber bei java enden meine kenntnisse leider, vor allem da es mit odbc und access ist.

Sorry,

martin

Franky
26-06-2001, 13:28
danke, bin aus zeitgruenden erst heute ins forum gekommen.

frank