2015-05-17 2 views
1

Я пишу код, который выполняет либо интерполяцию, либо подгонку кривой определенного количества экспериментальных точек, хранящихся в базе данных. Часть этого приложения позволяет пользователю добавлять новые точки к данным.'System.Data.SqlClient.SqlException'

Это та часть кода:

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 

Я получаю следующее сообщение об ошибке:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Incorrect syntax near '-'.

Incorrect syntax near '-'.

И линия:

cmd.ExecuteNonQuery() 

подсвечивается зеленым цветом. Я честно не знаю, в чем проблема, или что такое «исключение». И помощь наших инструкторов недоступна. Я бы очень признателен за некоторые разъяснения.

ответ

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

0

Если у вас есть дефис в столбце имя столбца должны быть завернуто в квадратных скобках, т.е. ось й становится [ось х].

Если вы запускаете запрос

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)" 
Смежные вопросы