0
我有一个VB窗体和一个连接到数据源的组合框。数据库有两个表Position
(SLOT, ID_WH
)和Warehouse
(ID_WH, WH_NAME
)。使用VB.net将组合框中的ID插入到SQL Server中
组合框链接到仓库,它显示WH_NAME
。
我需要将ID_WH
插入到Position
表中。
的代码是:
WH_CB.DisplayMember = "Warehouse" 'Column name
WH_CB.ValueMember = "ID_WH" 'Column name2
'ADD INFO TO Position (SLOT)
Dim Remove_space_start As String = SLOT_TXT.Text
Dim CharStart() As Char = {" "}
Dim Stringstart As String = Remove_space_start.TrimStart(CharStart)
Dim CharEnd() As Char = {" "}
Dim StringEnd As String = Stringstart.TrimEnd(CharEnd)
Try
objconnection.Open()
cmd.Connection = objconnection
cmd.CommandText = "InsertDataIntoPosition"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("SLOT", StringEnd)
cmd.Parameters.AddWithValue("ID_WH", WH_CB.SelectedValue)
cmd.ExecuteNonQuery()
MessageBox.Show("sucess")
'Refresh DATAGRID
dgv_slot.DataSource = Nothing
dgv_slot.Refresh()
Dim str As String = "select * from Position"
Using cmd As New SqlCommand(str, objconnection)
Using da As New SqlDataAdapter(cmd)
Using newtable As New DataTable
da.Fill(newtable)
dgv_slot.DataSource = newtable
End Using
End Using
End Using
Catch ex As Exception
MessageBox.Show("Error while inserting record on table..." &
ex.Message,
"Insert Records")
Finally
objconnection.Close()
End Try
我试图以显示与一个消息的whcb,它显示了ID_WH,而是试图将数据插入到表中我得到的错误:
System.Data.SqlClient.SqlException: 'Conversion failed when converting the nvarchar value 'Armazem4 ' to data type int.'
任何帮助?
[SQL注入警报](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - 您应该**不**将您的SQL语句连接在一起 - 使用**参数化查询**来代替,以避免SQL注入 –
仍在工作中,但会这样做,只要我能得到纠正这个错误。 – Xplode
@Xplode为什么第一次不正确?那么你不必重写。这个错误总是有可能与您编写查询的方式有关。无论如何,我猜想其中一个字段“SLOT”或“ID_WH”是数据库中的一个整数字段,并且您试图向其中插入一个字符串值“Armazem4”。这就是错误告诉你的。 – ADyson