Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Problem bei Ausführung einer SQL-Anfrage auf Access-DB-Tabel
kecks - So 18.10.09 10:19
Titel: Problem bei Ausführung einer SQL-Anfrage auf Access-DB-Tabel
Hallo Leute,
ich habe im Moment ein ganz seltsames Problem. Ich bestelle gerade ein Frontend zum Zugriff auf eine Access-Datenbank. Das klappt soweit eigentlich ganz gut, allerdings habe ich beim Zugriff auf eine Tabelle das Problem, dass dort eine Fehlermeldung kommt.
Hier mal ein Auszug meiner DB:
Zitat: |
iSP(iSPID, Name)
Module(ModulID, iSPID, Name)
Lehrveranstaltungen(VeranstaltungsID, Name, ...., ModulID, ...)
.
.
.
|
iSP - Module 1-n
Module - Lehrveranstaltungen 1-n
Und hier ein Auszug meines Programmcodes samt Fehlermeldung in der betreffenden Zeile:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| . .
String strSQL = "SELECT Name FROM Module";
OleDbConnection con = new OleDbConnection( ....); con.Open();
OleDbCommand cmd = new OleDbCommand(strSQL, con); OleDbDataReader dr = cmd.ExecuteReader(); . . .
dr.Close(); con.Close();
. . . |
Das Seltsame an der Geschichte, sobald ich in der SQL-Anweise in Zeile 4 auf eine andere Tabelle zugreife, sei es iSP oder Lehrveranstaltungen, läuft alles problemlos. Nur beim Zugriff auf die Tabelle Module kommt in Zeile 11 die Fehlermeldung, obwohl sich die Tabellen im Grunde kaum unterscheiden. Die Ausführung der SQL-Anweisung im Access funktioniert übrigens bei allen Tabellen problemlos.
Kann mir jemand erklären, wo der Fehler liegt? Was beim Zugriff auf die Tabelle Module so anders ist, als bei allen anderen Tabellen, dass nur hier eine Fehlermeldung kommt?
JüTho - So 18.10.09 10:32
Hallo und :welcome:
Module gehört zu den reservierten Wörtern von Access, siehe
MSDN [
http://support.microsoft.com/kb/209187/de]. Diese müssen in SQL-Befehlen in [] gesetzt werden:
SQL-Anweisung
1:
| String strSQL = "SELECT Name FROM [Module]"; |
Übrigens solltest du eine Connection vorzugsweise in einen
using-Block kapseln, das macht die Arbeit damit sicherer (und Close/Dispose können entfallen):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| using (OleDbConnection con = new OleDbConnection(....) { con.Open();
OleDbCommand cmd = new OleDbCommand(strSQL, con); OleDbDataReader dr = cmd.ExecuteReader(); while(dr.Read()) { ... } } |
Und Einrückungen machen Quelltexte besser lesbar.
Gruß Jürgen
kecks - So 18.10.09 10:49
Vielen Dank erstmal. Auf diese Idee wäre ich gar nicht gekommen. Werde schauen, ob das mein Problem löst.
Wegen den Einrückungen und using etc. Die war nur ein Auszug. Wollte nicht die kompletten 1000 Zeilen Code, die es momentan sind, posten. Aber du hast recht.
kecks - So 18.10.09 12:25
Ja, genau das war das Problem. Jetzt läuft alles. Danke nochmal.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!