Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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
Sql Dim DataTable=DataSet.Tables(TableName)——复制还是引用?_Sql_Vb.net_Reference - Fatal编程技术网

Sql Dim DataTable=DataSet.Tables(TableName)——复制还是引用?

Sql Dim DataTable=DataSet.Tables(TableName)——复制还是引用?,sql,vb.net,reference,Sql,Vb.net,Reference,我找不到一个明确的答案,但我需要确定。我有以下代码: Dim daMyInfo As New SqlDataAdapter("select * from [" & TableName & "] (nolock)", objConn) Dim dsMyInfo As New DataSet("MyInfo") ... daMyInfo.FillSchema(dsMyInfo, SchemaType.Source, TableName) daMyInfo.Fill(dsMyInfo,

我找不到一个明确的答案,但我需要确定。我有以下代码:

Dim daMyInfo As New SqlDataAdapter("select * from [" & TableName & "] (nolock)", objConn)
Dim dsMyInfo As New DataSet("MyInfo")
...
daMyInfo.FillSchema(dsMyInfo, SchemaType.Source, TableName)
daMyInfo.Fill(dsMyInfo, TableName)
Dim dtMyInfo As DataTable = dsMyInfo.Tables(TableName)
在后面的代码中,我得到:

For Each NewRow As DataRow In dtMyInfoAdd.Rows
    dtMyInfo.ImportRow(NewRow)
Next
Dim objCommandBuilder As New SqlCommandBuilder(daMyInfo)
daMyInfo.Update(dsMyInfo, TableName)

我假设这意味着
dtMyInfo
实际上只是指向与
dsMyInfo.Tables(TableName)
相同的对象,但我不确定,而且我更不确定,因为我在MS站点的任何地方都没有找到作为引用提到的对象。

DataTable是一种引用类型。在中可以看到,语法部分显示它是
,而不是
结构
。这意味着在进行赋值时,
dtMyInfo
变量的值将是对内存中实际数据表对象的引用,而不是对象本身。此时,使用变量的属性和方法就像使用内存中对象的属性和方法一样,因此向变量添加行会将这些行添加到内存中的对象。由于
dsMyInfo.Tables(TableName)
表达式引用的是同一个对象,因此新行也将包含在此处。

如果您不确定,只需在dtmyinfo.Tables中添加行数,然后使用操作符比较引用即可
Dim结果为布尔值=(表1为表2)