在向数据集中添加新数据行时插入命令行为

时间:2018-08-08 07:10:46

标签: sql sql-server database vb.net oledb

在下面的代码中,我向数据集 RecSet 添加了新行。但是在运行程序时,当我检查ProductsAdapt的 Insert命令的参数时,所有参数的值都为value = nothing 。添加新行时,“插入参数”命令不会更新吗?

Private ProductsAdapt As New OleDb.OleDbDataAdapter()
Private RecSet As DataSet

RecSet.Clear()

Dim oDR As DataRow = RecSet.Tables("Products").NewRow()

oDR("ProductID") = ProductID
oDR("DefinedDate") = DefinedDate
oDR("OperID") = OperID

RecSet.Tables("Products").Rows.Add(oDR)
intResult = ProductsAdapt.Update(RecSet, "Products")

1 个答案:

答案 0 :(得分:1)

这是预期的行为。考虑以下事实:DataTable中可能要保存多行。您希望InsertCommand的参数具有什么值?

发生的事情是,在该Update方法内部,适配器基本上遍历了DataRows的{​​{1}},并且对于每个DataTable为{ {1}},它将从该RowState的适当字段中设置每个参数的Added并调用Value。这就是为什么必须为每个参数指定源列的名称的原因:这样适配器就知道从哪里获取每一行的数据。