2017-06-01 65 views
0

我有一个VB窗体和一个连接到数据源的组合框。数据库有两个表PositionSLOT, ID_WH)和WarehouseID_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.'

任何帮助?

+0

[SQL注入警报](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - 您应该**不**将您的SQL语句连接在一起 - 使用**参数化查询**来代替,以避免SQL注入 –

+0

仍在工作中,但会这样做,只要我能得到纠正这个错误。 – Xplode

+2

@Xplode为什么第一次不正确?那么你不必重写。这个错误总是有可能与您编写查询的方式有关。无论如何,我猜想其中一个字段“SLOT”或“ID_WH”是数据库中的一个整数字段,并且您试图向其中插入一个字符串值“Armazem4”。这就是错误告诉你的。 – ADyson

回答

1

已解决,非常感谢。

我在不同的表中有相同的字段名称(不同类型),所以我强迫错误的获取信息。

我纠正后,其工作正常。

相关问题