【问题标题】:VB.NET tabledapter query insert into from another datasetVB.NET tableadapter 查询从另一个数据集插入
【发布时间】:2015-08-24 14:22:13
【问题描述】:

我有一种情况,我想从 MS SQL 表插入访问数据库表。 相同的列和所有内容。 我有两个数据集和两个表适配器。我可以在每个数据集中做任何我想做的事情——任何操作,但我不能从一个表插入到另一个表。 我尝试为目标 tableadapter 创建插入查询,但无法正常工作。尝试链接,没有任何效果。

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

感谢您的回答。你能帮我举个例子吗?我在设置时遇到了麻烦。这是我得到的:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    ' 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 关联的 DataTable。这样做的标准方法是这样的
    • 我之前的评论不完整。我的意思是说“执行此操作的标准方法是创建一个 DataTable 并从 DataAdapter 填充它。我在原始答案的末尾展示了用于执行此操作的 ADO.Net 代码片段”。希望这会有所帮助!
    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2017-12-10
    • 1970-01-01
    相关资源
    最近更新 更多