VB.NET tabledapter查询从另一个数据集插入

时间:2015-08-24 14:22:14

标签: vb.net sql-server-2008 ms-access dataset tableadapter

我有一种情况,我想从MS SQL表插入访问数据库表。 相同的列和一切。 我有两个数据集和两个表适配器。我可以在每个数据集中执行我想要的任何操作 - 任何操作但我无法从一个表插入另一个表。 我尝试为目标tableadapter创建一个Insert查询,但是我无法使用它。尝试连接,没有任何作用。

搜索了几天,根本找不到它。

感谢您的回答。你能帮我解释一下我的榜样吗?我无法设置它。这就是我得到的:

Dim myToTableTableAdapter As FirstDataSetTableAdapters.ToTableTableAdapter
myToTableTableAdapter = New FirstDataSetTableAdapters.ToTableTableAdapter()
Dim myFromTableTableAdapter As SecondDataSetTableAdapters.FromTableTableAdapter       
myFromTableTableAdapter =  New SecondDataSetTableAdapters.FromTableTableAdapter()

myFromTableTableAdapter = myToTableTableAdapter.Clone
'but it doesnt work from here`

我想做的是:

For each drfrom As DataRow In myFromTableTableAdapter.GetData

myToTableTableAdapter.InsertInto(drfrom.item(column01), drfrom.item(column02), drfrom.item(andSoOn))

Next

但在我看来,这比“插入选择”脚本要花费的时间长得多。

1 个答案:

答案 0 :(得分:0)

您不能将一个表中的行插入另一个表中,但有几种方法可以执行您想要的操作。一种方式(有点冗长)是这样的:

' sets it up with same schema but empty rows
 mOutTable = inTable.Clone  

'  Now insert the rows:
 For Each rowIn In inTable.Rows    
     r = mOutTable.NewRow()    
     For Each col In inTable.Columns
          r(col.ColumnName) = rowIn(col.ColumnName)    
     Next    
     mOutTable.Rows.Add(r) 
Next
mOutTable.AcceptChanges

第二种方式,更简洁,是:

  outTable = inTable.Clone  
  For Each inRow As DataRow In inTable.Rows
        outTable.LoadDataRow(inRow.ItemArray, False)
  End If

  outTable.AcceptChanges

请注意,inTable和outTable都是ADO.NET DataTable对象。您无法在DataAdapter对象上实现我的建议。您必须使用DataTable对象。每个DataTable都可以以ADO.NET的标准方式与DataAdapter相关联:

 Dim t as New DataTable()
 a.Fill(t);

其中a是ADO.NET DataAdapter。我希望这有帮助! 吉姆