Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如果多次调用,DbDataAdapter.Fill是否会将行追加到表中?_.net_Vb.net - Fatal编程技术网

.net 如果多次调用,DbDataAdapter.Fill是否会将行追加到表中?

.net 如果多次调用,DbDataAdapter.Fill是否会将行追加到表中?,.net,vb.net,.net,Vb.net,我继承了一些相当混乱、未记录的代码,我不确定该方法的行为: pclsAuditLog = New Data.clsAuditLog() pclsAuditLog.mfpGetAuditLog(pDS) pclsPROcAuditLog = New PROcData.clsAuditLog() pclsPROcAuditLog.mfpGetAuditLog(pDS) Data.clsAuditLog.mfpGetAuditLog(ByRef ds作为数据集)和PROcData.clsAudit

我继承了一些相当混乱、未记录的代码,我不确定该方法的行为:

pclsAuditLog = New Data.clsAuditLog()
pclsAuditLog.mfpGetAuditLog(pDS)

pclsPROcAuditLog = New PROcData.clsAuditLog()
pclsPROcAuditLog.mfpGetAuditLog(pDS)
Data.clsAuditLog.mfpGetAuditLog(ByRef ds作为数据集)
PROcData.clsAuditLog.mfpGetAuditLog(ByRef ds作为数据集)
都调用此方法:

Public Function mGetDataSet(ByRef objDs As DataSet, ByVal aStrDSName As String)
    Dim pObjDataAdaptor As New SqlClient.SqlDataAdapter

    pObjDataAdaptor.SelectCommand = New SqlCommand(aStrQuery, pCon)
    pObjDataAdaptor.SelectCommand.CommandTimeout = 3600

    pObjDataAdaptor.Fill(aObjDS, aStrDSName)
End Function
我希望我能回答为什么这些代码都是这样写的,但这就是我得到的,我正在努力理解它

无论如何,我的问题是,当一个
SqlDataAdapter
使用对同一
DataSet
对象的引用调用
Fill
方法时会发生什么

讨论了很多行为,包括大小写敏感、不同的表名以及类似的事情。但是,当存在同名的现有表时,我似乎找不到关于行是否被追加或覆盖的答案。具体来说,

如果调用Fill,并且数据集只包含一个名称仅因大小写不同的DataTable,则该DataTable将被更新。在这种情况下,比较不区分大小写。下面的C代码说明了这种行为


“更新”是什么意思?不幸的是,我无法具体测试此时发生了什么。只是希望有人能一目了然。

也许你应该从

使用后续填充调用刷新 数据集,必须满足两个条件:

The SQL statement should match the one initially used to populate the DataSet.

The Key column information must be present.
如果存在主键信息,则会删除任何重复的行 已对账,仅在对应的数据表中显示一次 数据集。主键信息可以通过 通过指定DataTable的PrimaryKey属性,或 通过将MissingSchemaAction属性设置为AddWithKey


重点是我的。因此,“更新”似乎是附加的意思,除非这会导致主键冲突。

这句话:“我继承了一些相当混乱、未记录的代码”是多余的;您可以说,“我继承了一些代码”SQLServerExpress可以免费下载,我建议您将其安装在您的开发PC上,以便运行实验。您甚至可以将实时数据库的备份还原到您的开发PC上。P.S.“with tools”版本是您想要的版本,谢谢,@SSS,但我已经在工作中配置好了所有配置。我发这封信的时候不在办公室谢谢,我想你是对的。我明天会再检查一遍,把这个标记正确。再检查一下就可以了。事实上,您是正确的,从第二次调用返回的行被追加到
数据集中正确的
数据表中。谢谢我昨天确实读过这个片段,但我并没有真正理解它。