我正在编写一个代码,可以对存储在数据库中的一定数量的实验点进行插值或曲线拟合。此应用程序的一部分允许用户向数据添加新点。
这是代码的一部分:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim connection As SqlConnection = New SqlConnection()
connection.ConnectionString = "Data Source=.;Initial Catalog = Newtcf;Integrated Security=True"
Dim sqlq As String = "Insert into Points (x-axis,y-axis,weight) Values (@x-axis,@y-axis,@weight)"
Dim cmd As New SqlCommand(sqlq, connection)
cmd.Parameters.Add("@x-axis", SqlDbType.Float).Value = TextBox1.Text
cmd.Parameters.Add("@y-axis", SqlDbType.Float).Value = TextBox2.Text
cmd.Parameters.Add("@weight", SqlDbType.Float).Value = TextBox3.Text
connection.Open()
cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
connection.Close()
End Sub
我收到以下错误:
System.Data.dll中出现未处理的“System.Data.SqlClient.SqlException”类型异常
其他信息:' - '附近的语法不正确。
' - '附近的语法不正确。
这一行:
cmd.ExecuteNonQuery()
以绿色突出显示。老实说,我不知道问题是什么,或者“例外”是什么意思。我们的导师帮助不大。我真的很感激一些澄清。
答案 0 :(得分:3)
这是因为特殊字符'-'
。你应该分隔列名称。改为:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim connection As SqlConnection = New SqlConnection()
connection.ConnectionString = "Data Source=.;Initial Catalog = Newtcf;Integrated Security=True"
Dim sqlq As String = "Insert into Points ([x-axis],[y-axis],[weight]) Values (@x,@y,@w)"
Dim cmd As New SqlCommand(sqlq, connection)
cmd.Parameters.Add("@x", SqlDbType.Float).Value = TextBox1.Text
cmd.Parameters.Add("@y", SqlDbType.Float).Value = TextBox2.Text
cmd.Parameters.Add("@w", SqlDbType.Float).Value = TextBox3.Text
connection.Open()
cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
connection.Close()
End Sub
在此处查看详细信息https://technet.microsoft.com/en-us/library/ms176027%28v=sql.105%29.aspx
答案 1 :(得分:0)
如果列名中有连字符,则列必须用方括号括起来,即x轴变为[x轴]。
如果您运行查询
SELECT x-axis
FROM BLAH
实际上它会尝试从列axis
中减去列x
。
我也会避免在@
变量中使用非字母数字字符,除非它是下划线。
试试这个:
Dim sqlq As String = "Insert into Points ([x-axis],[y-axis],[weight]) Values (@x_axis,@y_axis,@weight)"