Abfragename nach EXECUTE erwartet. – Fehler

Vorgeschichte: Ich wollte in C# eine Paradox-Tabelle mit einem SQL-Update-Statement aktualisieren. Meine Versuche dies direkt mittels

OleDbCommand aCmd = new OleDbCommand(“update t_time set bis = ‘” + DateTime.Now.ToString() + “‘ where personalNr = 481 and datum = “”12.06.2007″””, aCon);
aCmd.ExecuteNonQuery();

zu bewerkstelligen scheiterten an der Fehlermeldung “Datentypen in Kriterienausdruck unverträglich.”. Also machte ich mich im Web etwas schlau und fand einen Hinweis, dass man dies am Besten mittels Parameter umgeht. Das untenstehende Beispiel habe ich an meine Bedürfnisse angepasst und bekam dann die Fehlermeldung (die im Visual Studio angezeigt wird) wenn man versucht folgende SQL-Update-Anweisung an eine Paradox Datenbank zu senden.

Mein C# Code sah so aus:

 

String sConStr = @”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB\Paradox\Daten;Extended Properties=Paradox 7.x;”;
OleDbConnection aCon = new OleDbConnection(sConStr) ;
aCon.Open();
OleDbCommand aCmd = new OleDbCommand(“update t_time set bis = ‘” + DateTime.Now.ToString() + “‘ where personalNr = 31114 and ”
+ ” datum = @startDatum”, aCon);
aCmd.CommandType = CommandType.StoredProcedure;
OleDbParameter datParameter;
datParameter = new OleDbParameter(“@startDatum”, OleDbType.DBDate);
datParameter.Value = startdatum;
aCmd.Parameters.Add(datParameter);
aCmd.ExecuteNonQuery();
aCon.Close();

Beim Versuch dieses Statement auf der DB auszuführen bekam ich den Fehler “Abfragename nach EXECUTE erwartet.”

Nach etwas überlegen (fiel mir etwas schwer, weil ich schon zu viele Stunden am Rechner hing) fand ich den kleinen Fehler:

Statt

aCmd.CommandType = CommandType.StoredProcedure;

muss es natürlich

aCmd.CommandType = CommandType.Text;

heissen. Dann klappt die Datumsübergabe perfekt!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert