guardj Ответов: 2

SQL INSERT Statement-VB.net


Я не могу найти ошибку в этом коде
Я получаю это сообщение всякий раз, когда пытаюсь нажать на кнопку

"в инструкции insert содержится больше столбцов, чем значений, указанных в предложении values"

NOTE: button1 is ADD button

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim con As New SqlConnection
        Dim cmd As New SqlCommand
 
        Try
            con.ConnectionString = "Data Source=TYNE-PC;Initial Catalog=trial;Integrated Security=True"
            con.Open()
            cmd.Connection = con
    
            cmd = New SqlCommand("insert into records ([emp_id], [emp_name], [pos], [dept_name], [salary], [date]) values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "," & TextBox5.Text & "','" & TextBox6.Text & "','" & DateTimePicker1.Value.Date & "')", con)
 
            cmd.ExecuteNonQuery()
 
        Catch ex As Exception
 
            MessageBox.Show("Invalid" & ex.Message)
        Finally
            con.Close()
        End Try
        Me.RecordsTableAdapter.Fill(Me.TrialDataSet1.records)
    End Sub

2 Ответов

Рейтинг:
8

__TR__

Вам не хватает одинарных кавычек (') после

TextBox3.Text



TextBox3.Text & ","

должно быть
TextBox3.Text & "','"


Рейтинг:
18

OriginalGriff

Вы пропустили цитату или две:

cmd = New SqlCommand("insert into records ([emp_id], [emp_name], [pos], [dept_name], [salary], [date]) values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "," & TextBox5.Text & "','" & TextBox6.Text & "','" & DateTimePicker1.Value.Date & "')", con)

Становится
cmd = New SqlCommand("insert into records ([emp_id], [emp_name], [pos], [dept_name], [salary], [date]) values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox5.Text & "','" & TextBox6.Text & "','" & DateTimePicker1.Value.Date & "')", con)


Но не делай этого так!
Не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.