2013-07-29 28 views
1

我想從用戶在文本框中輸入的數據中插入新的數據到SQL服務器。 我的代碼無法運行,請幫助我。VB到SQL服務器

 Dim con As New SqlConnection 
    Dim cmd As New SqlCommand 

    con.ConnectionString = "Data Source=LANDSLIDE\SQLSERVER2005;Initial Catalog=PayrollSQL;User ID=sa;Password=lismyadmin" 

    cmd.Connection = con 
    con.Open() 
    cmd.CommandText = "INSERT INTO dbo.Member ([Name], [Code], [NRIC]) VALUES(" & TextBox1.Text & "," & TextBox2.Text & "," & TextBox3.Text & ")" 
    cmd.ExecuteNonQuery() 
    con.Close() 

回答

2

您應該使用參數化查詢。喜歡的東西:

cmd.CommandText = "INSERT INTO dbo.Member ([Name], [Code], [NRIC]) VALUES(@Name,@Code,@NRIC)" 
cmd.Parameters.AddWithValue("@Name",TextBox1.Text) 
cmd.Parameters.AddWithValue("@Code",TextBox2.Text) 
cmd.Parameters.AddWithValue("@NRIC",TextBox3.Text) 

此刻,你結束了你的字符串在SQL語句中出現字面上 - 和任何值你從TextBox1檢索 - 3不是SQL(希望的有效件 - 如果它們實際上是有效的SQL,那麼你正在執行SQL注入)

(順便說一下,你可以重命名控件 - 你應該重命名這些,以便你不必記住它,比如說,TextBox2是代碼之一)

+0

THX達明@Damien_The_Unbeliever –

2

可能會喔K或其他提供錯誤信息:

cmd.CommandText = "INSERT INTO dbo.Member ([Name], [Code], [NRIC]) VALUES('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')" 
+0

當然,這不會應付,如果文本框可能包含'''字符,且容易受到SQL注入。 –

+0

@Damien_The_Unbeliever是的你是對的,我只是想通過給他提供線索來解決他的問題。不是這樣做的最好方法。 –