在下面的代码中,我向数据集 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")
答案 0 :(得分:1)
这是预期的行为。考虑以下事实:DataTable
中可能要保存多行。您希望InsertCommand
的参数具有什么值?
发生的事情是,在该Update
方法内部,适配器基本上遍历了DataRows
的{{1}},并且对于每个DataTable
为{ {1}},它将从该RowState
的适当字段中设置每个参数的Added
并调用Value
。这就是为什么必须为每个参数指定源列的名称的原因:这样适配器就知道从哪里获取每一行的数据。