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ürgen
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.
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.