Я пытаюсь взять данные, введенные пользователем из формы, и вставить их в таблицу в базе данных Проблема в том, что всякий раз, когда компилятор достигает переменной Rtype чтобы сохранить его значение, он дает мне эту ошибку: Я знаю, что означает ошибка, но я просто не могу заставить ее работать. Ниже мой код в классе Form1Вставка данных в базу данных (sqlexception) не работает
Imports System.Data.SqlClient
Public Class Form1`
Private Sub newBtn_Click(sender As Object, e As EventArgs) Handles BtnNwRoom.Click
Dim obj As New Hotl()
Dim selectedItem As Object
selectedItem = hotelCombobox.SelectedItem()
If (obj.addnew(CInt(Me.roomNum.Text), CInt(selectedItem), Me.roomType.Text, Me.price.Text) = False) Then
MsgBox(" no record is added, Try again later")
End If
End Sub
End class
Это добавить новую функцию:
Public Function addnew(ByVal roomNo As Integer, ByVal hotelNo As String, ByVal RoomType As String, ByVal price As Integer) As Boolean
Dim sqlstmnt = "insert into Room (roomNo,hotelNo,RoomType,price) values(" & roomNo & " , " & hotelNo & " , " & RoomType & " , " & price & ")"
MsgBox(sqlstmnt)
conn = ConNew()
'''''''''''''''''''''''''''''' Execute Reader
''''''''''''''''''''''''''''''''''''''''''''''
Dim command As New SqlCommand(sqlstmnt, conn)
If command.ExecuteNonQuery() = 1 Then
MessageBox.Show("insertion Succeded")
Return True
Else
Return False
End If
End Function
Используйте параметры sql, которые, вероятно, разрешат эту проблему и, что еще важнее, - ваша неотъемлемая уязвимость в SQL-инъекции. –
Каковы столбцы в таблице 'Room'? –
Одним из ваших значений является текст «большой», но вы не обмениваете текстовые значения в одинарные кавычки, поэтому его интерпретируют как имя столбца, поэтому вам говорят, что это имя столбца недействительно. Вы могли бы просто поместить одинарные кавычки в нужные места в вашем SQL, но это мера бандаи. Делайте это правильно с параметрами, как предлагает @TimSchmelter. См. Здесь: http://jmcilhinney.blogspot.com.au/2009/08/using-parameters-in-adonet.html – jmcilhinney