Laden...

Langsamer Speichervogang mit Access bei kleinen Datenmengen

Erstellt von carmani vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.035 Views
C
carmani Themenstarter:in
274 Beiträge seit 2008
vor 15 Jahren
Langsamer Speichervogang mit Access bei kleinen Datenmengen

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

J
3.331 Beiträge seit 2006
vor 15 Jahren
  1. [Artikelserie] Parameter von SQL Befehlen (das hat zwar mit dem Zeitproblem weniger zu tun, ist aber trotzdem sehr zu beachten)

Jürgen

71 Beiträge seit 2008
vor 15 Jahren

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.

F
10.010 Beiträge seit 2004
vor 15 Jahren

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.