Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datenbankspalte mit Leerzeichen
WI-Student - Sa 02.05.09 11:46
Titel: Datenbankspalte mit Leerzeichen
Hallo,
ich habe ein Problem mit einem DB-Zugriff(Access). In der Tabelle ist eine Spalte vorhanden deren Namen ein Leerzeichen enthält ("mit Priorität"). Sobald ich das Feld mit in den Insert-Command aufnehme folgt eine Fehlermeldung("Syntaxfehler bei der INTO-Anweisung"). Wenn ich den Feldname mit Hochkommas umrande heißt es, dass das Feld unbekannt sei.
Wie muss ich den unten aufgeführten Code ändern, damit Spaltennamen mit Leerzeichen keine Fehlermeldung mehr hervorrufen?
adapter.InsertCommand = connection.CreateCommand();
adapter.InsertCommand.CommandText = "Insert into Aufgaben(ID, Aufgabentext, mit Priorität)values(@ID, @Aufgabentext, @mit Priorität)";
adapter.InsertCommand.Parameters.Add("@ID", OleDbType.Integer, 0, "ID");
adapter.InsertCommand.Parameters.Add("@Aufgabetext", OleDbType.Char, 0, "Aufgabentext");
adapter.InsertCommand.Parameters.Add("@mit Priorität", OleDbType.Integer, 0, "mit Priorität");
DateTime myDate = new DateTime(2003, 12, 6);
DataRow newRow = datatable.NewRow();
newRow["ID"] = 5;
newRow["Aufgabentext"] = "Halt dei Lapp";
newRow["mit Priorität"] = true;
datatable.Rows.Add(newRow);
adapter.Update(datatable);
datatable.AcceptChanges();
JüTho - Sa 02.05.09 16:03
Nach allem, was ich zu Access gelesen habe, sollte es so gehen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| adapter.InsertCommand.CommandText = "Insert into Aufgaben(ID, Aufgabentext, [mit Priorität]) " + "values (@ID, @Aufgabentext, @mit_Priorität)";
adapter.InsertCommand.Parameters.Add("@mit_Priorität", OleDbType.Integer, 0, "[mit Priorität]");
newRow["[mit Priorität]"] = true; |
Erklärung: Feldnamen in Access und MS-SQL, die unzulässige Zeichen enthalten, müssen in eckige Klammern eingebunden werden. (Bei anderen DBMS geht das mit Gänsefüßchen.) Als Parametername ist ein normaler Variablenname zu verwenden.
Übrigens ist AcceptChanges überflüssig; das wird durch den Update-Befehl automatisch ausgeführt. In der Tat gibt es fast keine Situation, wo es manuell aufzurufen ist.
Gruß Jürgen
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!