Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Langsamer Speichervogang mit Access bei kleinen Datenmengen
carmani
myCSharp.de - Member



Dabei seit:
Beiträge: 274

Themenstarter:

Langsamer Speichervogang mit Access bei kleinen Datenmengen

beantworten | zitieren | melden

verwendetes Datenbanksystem: <Access>

Hei Leute,

Speicherein Paar Daten die in Form von Array da sind ab. Sollte ja normal recht flink gehen vor allem wenn nur 6 Zeilen oder weniger in die DB zu schreiben sind. Weis nicht warum es solange dauert. Bis zur stelle wo die Arrays befüllt werden läuft alles sehr schnell und dann wenn ich diese in die DB speichere braucht das Ding eweig.

Mein Code:

Bei dem Teil ruf ich immer die Speicherroutine auf:


            for (int i = 0; i < anz; i++)
            {
                save_node(NAME[i], ID[i], PARENT[i], TAG[i]);
            }

Bei dem Teil speicher ich in die DB:


public static string save_node(string NODE, int ID, int PARRENTID, string TAG)
        {
            string message = "";

            try
            {
String sSQLCommand = "INSERT INTO MD_HIRARCHIE (ID, PARRENTID, NAME, TAG)  " +
"VALUES( " + ID + ", " + PARRENTID + ", '" + NODE + "','" + TAG + "');";

                OleDbConnection con = new OleDbConnection(db.strCon);
                con.Open();
                OleDbCommand cmd = new OleDbCommand(sSQLCommand, con);
                cmd.ExecuteNonQuery();

                con.Close();
                return ("");
            }
            catch
            {
                message=error_gui(3);
                return (message);
            }          
        }

So schaut mein Code aus. Ich versteh nicht warum das solange bruacht (lange sind ein paar sekunden ca 5 für 5 Zeilen) das ist aber für die geringen Datenmengen extrem langsam.

Hat jemand verbesserungsvorschläge wie ich es anders machen kann oda sieht wer einen Fehler?

Danke im Voraus. lg tom
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von carmani am .
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.996

beantworten | zitieren | melden

1. [Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen

2. Effizienz von db-inserts über oledb data provider
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3.331
Herkunft: Berlin

beantworten | zitieren | melden

3. [Artikelserie] Parameter von SQL Befehlen (das hat zwar mit dem Zeitproblem weniger zu tun, ist aber trotzdem sehr zu beachten)

Jürgen
private Nachricht | Beiträge des Benutzers
progi123
myCSharp.de - Member

Avatar #avatar-3317.gif


Dabei seit:
Beiträge: 71
Herkunft: Süddeutschland

beantworten | zitieren | melden

Nach einer 6 Monate langen Entwicklung musste ich feststellen, dass Access wirklich seinem Ruf als langsames Datenbanksystem gerecht wird. Hab mich dann entschieden auf SQLite umzusteigen.
Hier ist ein Programm das die Unterschiede aufzeigt:

Sqlite vs Access
(konnte es leider nicht als Datei anhängen)

Es wird jeweils eine Access- und eine SQLite-Datenbank auf Laufwerk C:\ erstellt.
In beide werden die selben Daten importiert, die man später in einem DataGridView ansehen kann. Access braucht etwa 7 Minuten zum importieren. Bei SQLite sind es etwa 7 Sekunden.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von progi123 am .
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.996

beantworten | zitieren | melden

Schön, wie du da äpfel mit birnen vergleichst.

Wenn du auch um OleDb.Update das mit der Transaction machst,
ist es bei Acces fast genauso schnell.
private Nachricht | Beiträge des Benutzers