2016-08-29 4 views
-2

hier ist die Geschichte:SQL Command Error

Im Versuch, einige Daten, die die Form meines Datenbank-Formular einzufügen, sondern etwas, was falsch mit der Syntax „Vs Say so“, aber ich kann nicht den Fehler finden und einig Eine Hilfe?

MySqlConnection conn = new MySqlConnection("Server=localhost;Database=ltdb;UID=root;Password=1234;port=3306"); 
try 
{ 
    string command = "(INSERT INTO invoice companyName,rate,svatNo,tinNo,line1,line2,city)VALUES('" + this.txtname.Text + "','" + this.txtrate.Text + "','" + this.txtsvatno.Text + "','" + this.txttinno.Text + "','" + txtadline1.Text + "','" + txtadline2.Text + "','" + txtcity.Text + "');"; 
    conn.Open(); 
    MySqlCommand cmd = new MySqlCommand(command, conn); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
    MessageBox.Show("Saved !"); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
+1

Verwenden Parameter. Ihr Code ist offen für die SQL-Injektion. – Kinetic

+1

Die Halterung muss nach Rechnung sein. Nicht vorher einfügen – Jens

+0

Bitte fügen Sie den VS Fehler zu Ihrer Beschreibung hinzu. –

Antwort

0

Ändern Sie Ihre

string command = "(INSERT INTO invoice companyName,rate,svatNo,tinNo,line1,line2,city)VALUES('" + this.txtname.Text + "','" + this.txtrate.Text + "','" + this.txtsvatno.Text + "','" + this.txttinno.Text + "','" + txtadline1.Text + "','" + txtadline2.Text + "','" + txtcity.Text + "');"; 

Um

string command = "INSERT INTO invoice (companyName,rate,svatNo,tinNo,line1,line2,city) VALUES (@name,@rate,@vatno,@tinno,@adline1,@adline2,@city)"; 
command.Parameters.AddWithValue("name",txtname.Text); 
command.Parameters.AddWithValue("rate",txtrate.Text); 
.... 

* Edit: Für mehr Informationen, google "C# parametrisierte SQL"

0

You Wrong Halter

INSERT INTO invoice (companyName,rate,svatNo,tinNo,line1,line2,city) VALUES ('" + this.txtname.Text + "','" + this.txtrate.Text + "','" + this.txtsvatno.Text + "','" + this.txttinno.Text + "','" + txtadline1.Text + "','" + txtadline2.Text + "','" + txtcity.Text + "'); 
1

INSERT INTO invoice companyName, ... fehlende öffnende Klammer setzen, richtig ist

INSERT INTO invoice(column1, column2, ...) VALUES (@Columns1, @columns2, ...) 

kommend Punkt 2: Sie sind open for sql-injection. Verwenden Sie parametrisierte Abfragen.