Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Syntaxfehler in der INSERT INTO-Anweisung
nicolon - Fr 18.10.13 18:41
Titel: Syntaxfehler in der INSERT INTO-Anweisung
Guten Tag,
ich bin schon seit Tagen am verzweifeln. Ganz einfacher Code und bestimmt ganz einfaches Problem:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data.mdb"); con.Open();
string strSQL = "INSERT INTO tbl_user (ID, User, Online) VALUES (3, '"+ data +"', 'NEIN')";
OleDbCommand cmd = new OleDbCommand(strSQL, con); OleDbDataReader dr = cmd.ExecuteReader(); dr.Close(); con.Close(); |
data ist ein string. ID ist ein Autowert rest ist TEXT
Ich nutze VS2010
Fehlermeldung des Compilers:
Eine nicht behandelte Ausnahme des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.
Zusätzliche Informationen: Syntaxfehler in der INSERT INTO-Anweisung.
Moderiert von
Th69: C#-Tags hinzugefügt
Th69 - Fr 18.10.13 19:18
Hallo und :welcome:
der Fehler ist ganz einfach: ExecuteReader ist zum Ausführen einer Query (Select-Anweisung). Du möchtest aber eine sog. "NonQuery" ausführen, d.h. ExecuteNonQuery ist die richtige Methode dafür.
nicolon - So 20.10.13 13:33
Hey,
danke nochmal wegen deiner Antwort. Allerdings fuktioniert es immernoch nicht so ganz. Es wird immernoch bei
test = cmd.ExecuteNonQuery(); eine Exception ausgeworfen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| int test; OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Users\Nicolon\data.mdb"); con.Open();
string strSQL = "INSERT INTO dbo.tbl.user (ID, User, Online) VALUES ('3', 'This is a test', 'NEIN')";
OleDbCommand cmd = new OleDbCommand(strSQL, con); test = cmd.ExecuteNonQuery(); con.Close(); |
Es heißt immernoch Syntaxfehler in der INSERT INTO-Anweisung.
Ich hoffe jmd kann mir helfen wäre echt cool.
Gruß
Nicolon
Moderiert von
Th69: C#-Tags hinzugefügt
Greenberet - Mo 21.10.13 13:53
Es ist schon eine Weile her, dass ich mit Access gearbeitet habe, aber ich glaube es braucht ein ';' am Ende
C#-Quelltext
1:
| string strSQL = "INSERT INTO tbl_user (ID, User, Online) VALUES ('3', '" + data +"', 'NEIN');"; |
Ralf Jansen - Mo 21.10.13 14:18
Schema.Datenbank.Tabelle?? Sowas kennt man in Server Datenbanksystemen aber in Access?
baumina - Mo 21.10.13 14:25
Ich glaube eher, dass der Name der Tabelle nicht stimmt, denn einen Tabellennamen mit "." ist sehr komisch.
statt dbo.tbl.user => tbl_user ?
EDIT : Ah, Ralf war schneller :-)
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!