Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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 SqlDataAdapter.Update是否也更新数据表?_.net_Asp.net_.net 3.5_Ado.net - Fatal编程技术网

.net SqlDataAdapter.Update是否也更新数据表?

.net SqlDataAdapter.Update是否也更新数据表?,.net,asp.net,.net-3.5,ado.net,.net,Asp.net,.net 3.5,Ado.net,我的问题是,在使用datatable中的数据更新数据库之后,datatable是否也会使用数据库中的最新信息进行更新。或者我必须做以下事情: Dim newFilesAdptr As SqlDataAdapter = New SqlDataAdapter(newFilesCmd) Dim newFilesBuilder As SqlCommandBuilder = New SqlCommandBuilder(newFilesAdptr) Dim newFilesDataTable As Data

我的问题是,在使用datatable中的数据更新数据库之后,datatable是否也会使用数据库中的最新信息进行更新。或者我必须做以下事情:

Dim newFilesAdptr As SqlDataAdapter = New SqlDataAdapter(newFilesCmd)
Dim newFilesBuilder As SqlCommandBuilder = New SqlCommandBuilder(newFilesAdptr)
Dim newFilesDataTable As DataTable = New DataTable
newFilesAdptr.Fill(newFilesDataTable)

'Some code

newFilesDataTable.Rows.Add(newFilesRow)
newFilesAdptr.Update(newFilesDataTable)

'Immediately get newest data
newFilesDataTable = Nothing
newFilesDataTable = New DataTable
newFilesAdptr.Fill(newFilesDataTable)

否-数据未从数据库同步回内存中的datatable。它有效地将数据表中的数据(并且仅该数据)与实际数据库同步

此方法读取表中每个datarow的rowstate,并将相应的操作(更新、插入、删除)应用于数据库以反映更改


一旦通过DataAdapter成功调用Update,就可以调用DataTable.AcceptChanges()将表中所有行的rowstate重置为unchanged,清除所有已删除的行,并有效地将DataTable中的行与DB中的行同步,尽管DB中的新数据不会加载回DataTable。

谢谢。正是我想要的。不过有一个问题。上面的代码段是更新后从数据库获取当前数据的最佳方法吗?实际上,在分配给新数据表之前,无需将数据表设置为null(Nothing)。也可以调用DataTable.Clear()在重新加载之前清除行,而不是创建新的DataTable对象。