Autor Beitrag
nicolon
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 18.10.13 18:41 
Guten Tag,
ich bin schon seit Tagen am verzweifeln. Ganz einfacher Code und bestimmt ganz einfaches Problem:
ausblenden 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();  // Hier wird eine Exception geworfen bzw. Programm stoppt

            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 user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: nicolon
nicolon Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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.
ausblenden 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();  //Hier kommt Exception

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 user profile iconTh69: C#-Tags hinzugefügt
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: 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

ausblenden C#-Quelltext
1:
string strSQL = "INSERT INTO tbl_user (ID, User, Online) VALUES ('3', '" + data +"', 'NEIN');";					
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 21.10.13 14:18 
Zitat:
dbo.tbl.user


Schema.Datenbank.Tabelle?? Sowas kennt man in Server Datenbanksystemen aber in Access?
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: 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 :-)