Laden...

[gelöst] Fehlerhaftes SQL-Statement

Erstellt von Jack Sun vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.516 Views
Jack Sun Themenstarter:in
109 Beiträge seit 2009
vor 14 Jahren
[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?

S
16 Beiträge seit 2010
vor 14 Jahren

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

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

Jack Sun Themenstarter:in
109 Beiträge seit 2009
vor 14 Jahren

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?

344 Beiträge seit 2006
vor 14 Jahren

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

Jack Sun Themenstarter:in
109 Beiträge seit 2009
vor 14 Jahren

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?

S
16 Beiträge seit 2010
vor 14 Jahren

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

Jack Sun Themenstarter:in
109 Beiträge seit 2009
vor 14 Jahren

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?

F
10.010 Beiträge seit 2004
vor 14 Jahren

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