1

我正在尝试将用户在文本框中输入的新数据插入 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()
4

2 回答 2

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注射)

(顺便说一句,您可以重命名控件 - 您应该重命名那些TextBoxes,这样您就不必记住,例如,TextBox2是用于代码的那个)

于 2013-07-29T06:28:39.003 回答
2

可能会起作用,否则会提供错误消息:

 cmd.CommandText = "INSERT INTO dbo.Member ([Name], [Code], [NRIC]) VALUES('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')"
于 2013-07-29T06:30:10.913 回答