【发布时间】:2016-11-30 19:39:52
【问题描述】:
我正在尝试向我的表中添加一条记录,但是在它尝试这样做之后我遇到了异常。我能够成功打开连接,(我的第一个消息框出现)但之后我得到了异常。这是我的代码:
Private Sub btnUpdateInfo_Click(sender As Object, e As EventArgs) Handles btnUpdateInfo.Click
Dim con As New SqlConnection
Dim cmd As New SqlCommand
con = New SqlConnection("Data Source=localhost\SQLEXPRESS;Initial Catalog=CISDB;Integrated Security=SSPI;")
Try
cmd.CommandText = "INSERT INTO customers (FirstName,LastName) VALUES (txtFirstName.Text, txtLastName.Text)"
cmd.Connection = con
con.Open()
MsgBox("Connection Open ! ")
cmd.ExecuteNonQuery()
MsgBox("Record inserted")
con.Close()
Catch ex As Exception
MsgBox("Error!")
End Try
End Sub
【问题讨论】:
-
使用参数将值传递到语句中。
-
您是否想为名字插入文字“txtFirstName.Text”令人怀疑。使用 SQL 参数。删除 Try/Catch - 它隐藏了您的重要信息
-
幸运的是,这对您来说失败了。它失败了,因为您试图插入字符串文字而不是值。但是,您需要在此处使用参数,而不是像这样添加文本框值,因为它容易受到 sql 注入的影响。正如已经提到的那样,catch 是一个可怕的设计。它几乎比一个空的捕获更好。您知道发生了错误,但由于您没有记录或提供任何有用的信息,因此您无法知道发生了什么。
-
@SeanLange 实际上它失败了,因为 SQL 不知道符号
txtFirstName.Text和txtLastName.Text。它们不是查询中的字符串文字,因此如果.将其抛出,它将抛出未知符号错误或语法错误。 -
@DStanley - 实际上它是一个字符串文字,当传递给 sql 引擎时会失败。我们在这里说同样的话。幸运的是,在鲍比桌拜访他们之前,它失败了。 :D
标签: sql .net sql-server vb.net