我有问题插入数据从我的datagridview到我的SQL Server表
我得到的错误是:System.Data.SqlClient。参数化查询'(@Articulo varchar(8000),@Cantidad varchar(8000),@Precio varchar'需要参数'@Articulo',该参数没有提供。
我代码:
Private Sub btnGetTotal_Click(sender As Object, e As EventArgs) Handles btnGetTotal.Click
Dim connection As SqlConnection = New SqlConnection("xxx")
Dim command As SqlCommand = New SqlCommand("INSERT INTO Ordenes_Full (Articulo, Cantidad, Precio) VALUES (@Articulo, @Cantidad, @Precio)")
Dim dataAdapter As New Data.SqlClient.SqlDataAdapter
Dim dataSet As New Data.DataSet
command.Parameters.Add("@Articulo", SqlDbType.VarChar)
command.Parameters.Add("@Cantidad", SqlDbType.VarChar)
command.Parameters.Add("@Precio", SqlDbType.VarChar)
connection.Open()
command.Connection = connection
For i As Integer = 0 To DataGridView1.Rows.Count - 1
command.Parameters(0).Value = DataGridView1.Rows(i).Cells(0).Value
command.Parameters(1).Value = DataGridView1.Rows(i).Cells(1).Value
command.Parameters(2).Value = DataGridView1.Rows(i).Cells(2).Value
command.ExecuteNonQuery()
Next
End Sub
我建议采用完全不同的方法,正如我在对该问题的评论中所建议的那样。如果你要坚持使用这种方法,你必须确保"empty"单元格以NULL
的形式保存到数据库中。你可以这样做:
command.Parameters(0).Value = If(DataGridView1.Rows(i).Cells(0).Value, DBNull.Value)
将使用电池的Value
,除非它是Nothing
,在这种情况下,它将使用DBNull.Value
代替。
DBNull.Value
是什么ADO。用来表示数据库NULL
。它不能只使用Nothing
的原因是因为ADO。NET是在可空值类型出现之前创建的。例如,如果您在期望Integer
的地方使用Nothing
,那么它将被解释为零,而不是NULL
。