【发布时间】:2019-12-17 06:19:04
【问题描述】:
如何将布尔类型数据从 datagridview 插入 SQL Server?当我取消选中datagridview中的复选框并插入数据时:
从 DBNull 类型到 String 类型的错误转换无效。
Dim index As Integer
Dim selectedRow = Quantum_GR.DataGridView1.Rows(index)
Try
For I = 0 To Quantum_GR.DataGridView1.Rows.Count - 2
'Dim GRNo As String
Dim StockCode As String = Quantum_GR.DataGridView1.Rows(I).Cells("STKID").Value
Dim StockName As String = Quantum_GR.DataGridView1.Rows(I).Cells("STKNAME").Value
Dim GRQuantity As Double = Quantum_GR.DataGridView1.Rows(I).Cells("GRQTY").Value
Dim StockCost As Double = Quantum_GR.DataGridView1.Rows(I).Cells("COST").Value
Dim BatchControl As Boolean = Quantum_GR.DataGridView1.Rows(I).Cells("BATCHCTR").Value
Dim StockBatchID As String = Quantum_GR.DataGridView1.Rows(I).Cells("BATCHID").Value
Dim StockExpDate As Date = Quantum_GR.DataGridView1.Rows(I).Cells("EXPDATE").Value
Dim StockTaxCode As String = Quantum_GR.DataGridView1.Rows(I).Cells("TAXCODE").Value
Dim StockTaxAmount As Double = Quantum_GR.DataGridView1.Rows(I).Cells("TAXAMT").Value
sqlcon.Open()
If StockCode <> "" Then
Dim grquery As String = "INSERT INTO GRT(GRNO,STKID,STKNAME,GRQTY,COST,BATCHCTR,BATCHID,EXPDATE,TAXCODE,TAXAMT) VALUES ('" & GRID & "','" & StockCode & "','" & StockName & "'," & GRQuantity & "," & StockCost & ",'" & BatchControl & "','" & StockBatchID & "','" & StockExpDate & "','" & StockTaxCode & "'," & StockTaxAmount & ")"
Dim sqlcmd As New SqlCommand(grquery, sqlcon)
sqlcmd.ExecuteReader()
sqlcmd.Dispose()
End If
sqlcon.Close()
sqlcon.Open()
SQLcmd = New SqlCommand("UPDATE GRT SET TCOST=ROUND(GRQTY*COST,2)", sqlcon)
sqlda = New SqlDataAdapter(SQLcmd)
sqldataset = New DataSet
sqlda.Fill(sqldataset)
sqlcon.Close()
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
【问题讨论】:
-
停止你正在处理的所有事情,然后阅读 SQL 注入。然后,修复代码以使用参数而不是字符串连接。
-
为什么不简单地将
DataTable绑定到DataGridView?那么您根本不需要任何代码来传输数据,因为它会自动发生。 -
最后一条 tsql 语句(“UPDATE ...”)刚刚更新了 GRT 中的 EVER SINGLE ROW。不仅仅是你插入的那个——所有的。这真的是你的目标吗?为什么你需要另一个声明来做到这一点?为什么不在插入语句中这样做?如果始终按照代码中指定的方式计算该列 (TCOST),请考虑在数据库中执行此操作。
标签: sql-server vb.net