2016-08-29 4 views
-2

での話です1つの助け?SQLコマンドエラーここ

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

使用パラメータをグーグル。あなたのコードはSQLインジェクションが可能です。 – Kinetic

+1

ブラケットは請求書の後にする必要があります。前に挿入しない – Jens

+0

説明にVSエラーを追加してください。 –

答えて

0

変更あなたの

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 + "');"; 

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); 
.... 

*編集:詳細情報については、 "C#のパラメータ化されたSQL"

0

あなたは正しい、開くブレースが欠落し

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, ...間違ったブラケットを入れては

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

は2点まで来ている:あなたはopen for sql-injectionです。パラメータ化されたクエリを使用します。