2011-01-07 16 views
0

EXACT Duplikat Syntax error in INSERT INTO statement in c# oledb?Syntaxfehler in der INSERT INTO-Anweisung in C# OleDb Ausnahme kann nicht erkennen den Fehler

Hallo Ich kann nicht den Fehler erkennen. Bitte helfen Sie. Es gibt eine OleDb-Ausnahme aufgrund eines Syntaxfehlers. Syntaxfehler in der INSERT INTO-Anweisung OleDb Exception wird nicht behandelt.

private OleDbConnection myCon; 

    public Form1() 
    { 
     InitializeComponent(); 
     myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C.mdb"); 
    } 

private void insertuser_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      OleDbCommand cmd = new OleDbCommand(); 
      myCon.Open(); 
      cmd.Connection = myCon; 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "INSERT INTO User ([UserID], [Forename], [Surname], [DateOfBirth], [TargetWeight], [TargetCalories], [Height]) Values ('" + userid.Text + "' , '" + fname.Text + "' , '" + sname.Text + "' , '" + dob.Text + "' , '" + tarweight.Text + "' , '" + tarcal.Text + "' , '" + height.Text + "')"; 


      cmd.ExecuteNonQuery(); 
      myCon.Close(); 
     } 
     catch (Exception ex) { MessageBox.Show(ex.ToString()); } 



    } 
+1

Willst du uns sagen, was der Fehler ist? –

+2

Setze Klammern [] um den Tabellennamen "User". Es ist ein reserviertes Wort in SQL Server. –

+1

** Bitte ** parametriere deine Anfrage – BoltClock

Antwort

0

Wenn TargetWeight, Height und TargetCalories sind Gleitkommazahlen oder Integer-Werte, sie müssen nicht durch Anführungszeichen in der SQL-Anweisung umgeben sein.

Auch nicht direkt auf Ihre Frage bezogen, aber Sie sollten wirklich eine parametrisierte Abfrage in Betracht ziehen. Ihr Code ist sehr anfällig für SQL-Injection.

1

Was sind die Werte, die Sie einfügen möchten? Ist die Höhe vielleicht in Fuß und Inch (5'10 ")? In diesem Fall haben Sie die Zeichenfolge (') geschlossen und haben einen Syntaxfehler.

Und ich stimme voll und ganz mit @Brennan Vincent. Konstruieren von Raw SQL