Laden...

[gelöst] Fehlerhaftes SQL-Statement

Letzter Beitrag vor 14 Jahren 8 Posts 1.521 Views
[gelöst] Fehlerhaftes SQL-Statement

verwendetes Datenbanksystem: MS Access 2003

Hallo liebe Community,
ich habe mit C# eine Anwendung geschrieben, mit der ich auf eine MS-Access 2003 mittels des OleDBConnectors und SQLbefehle zugreife.
Nun ist es so, das ich im Code folgenden Insert-Befehl zusammensetze:

INSERT INTO T_Stellenangebot (ID, Stellenangebotsnummer, Berufsbezeichnung, Gültig_bis, Begin) VALUES (6, '123', 0, '21.04.2010', '21.04.2010')

und dieses an die Datensammlung weiterleiterleite.
Mein Problem ist, das ich dann jedes mal die Meldung bekomme, das es eine fehlerhafte SQL-Anweisung ist. Wenn ich aber in die SQL-Abfrage von Access wechsle und ihn dort eintippe, wird dieser Befehl fehlerfrei ausgeführt. Andere SQL-Befehle (egal ob select, update, delete bei allen Tabellen oder insert bei anderen Tabellen) werden auch ohne Probleme ausgeführt, nur bei dieser Tabelle wird der Insertbefehl jedes mal verweigert.

Kann mir jemand einen Tipp geben, warum es so ist? oder ist das nur wieder eine Macke von MS, nach dem Motto "Neustarten und nochmal versuchen"?

und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?

Du solltest ein Schlüsselwort in [] schreiben: also [begin].

Spaltennamen mit Umlauten find ich nicht schön, aber das ist ne andere Geschichte. ^^

erstmal danke für die schnelle antwort
WO genau soll das [begin] eingefügt werden? wenn ich es vpr das Insert setzte, gibt er mir die Meldung "ungültige SQL-Anweisung"

der zugriff erfolgt über folgenden code:

OleDbConnection con = new OleDbConnection(
               @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + this.pfad);
            con.Open();

            dt = new DataTable();

            OleDbCommand cmd = new OleDbCommand(SQLStatement, con);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            try
            {
                da.Fill(dt);
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                con.Close();
            }
            return this.dt;

die Umlaute ahbe cih mittlerweile auch entfernt, daran kann es auch nicht liegen

und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?

Hallo

Wenn das Datum in der Access-Datenbank ein DateTime ist, musst du das Datum in der SQl mit ## umschliessen.

Wenn du mit Variablen in C# arbeitest mach es mit Parameter.

Gruss Lothi

Die #n helfen auch nicht, bekomme immernoch die Meldung das es einen Syntaxfehler in der Insertanweisung gibt

und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?

INSERT INTO
T_Stellenangebot
(ID, Stellenangebotsnummer, Berufsbezeichnung, Gültig_bis, [Begin])
VALUES
(6, '123', 0, '21.04.2010', '21.04.2010')

sorry, war wohl nicht ganz klar

DANKE 😄

Dieses Mal hat es geklappt. Ich hab die Spalte "Begin" in "BeginStellenangebot" umgenannt. erschien mir erst einmal einfacher als abfangroutinen mit schlüsselwortsuchen einzubauen.

Noch einmal Danke

und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?

Zusätzlich zum maskieren: [Artikelserie] Parameter von SQL Befehlen