【问题标题】:selecting from one database and inserting row to new database从一个数据库中选择并将行插入新数据库
【发布时间】:2015-09-22 23:12:41
【问题描述】:

我正在寻找一个伪代码来编写一个 VB.NET 游标来从一个数据库中的一个表中选择列,然后使用数据适配器将其插入到另一个数据库中的另一个表中(它们*不在同一台服务器上)等等。 我只需要在学习时参考一些东西。谢谢

Dim selectStr As String = _ "从 db1 中选择 *"

Dim insertStr As String = _ "插入 db2(col1)"

    Try
        da_adapter = New OleDb.OleDbDataAdapter(selectStr, connStr)
        da2_adapter = New OleDb.OleDbDataAdapter(insertStr, connStr2)

        da_adapter.SelectCommand.CommandTimeout = 720
        da_adapter.Fill(ds)

        da2_adapter.SelectCommand.CommandTimeout = 720
        da2_adapter.Fill(ds)
Catch ex As Exception

    End Try

【问题讨论】:

  • 选择列或选择in某些列的数据?
  • 如果两个数据库在同一台服务器上,为什么要通过vb.net?只需直接使用 insert into... select
  • 抱歉打错了,我的意思是说不在同一台服务器上
  • 我要选择某些列中的数据

标签: vb.net datatable dataset dataadapter


【解决方案1】:

在您的原始代码中,这部分是错误的:

da2_adapter = New OleDb.OleDbDataAdapter(insertStr, connStr2)

当您以这种方式创建数据适配器时,您提供的 SQL 语句将成为 SelectCommand 的一部分。您希望自己成为InsertCommand 的一部分,这需要您自己完成:

Dim cmd2 As New OleDb.OleDbCommand(insertStr, connStr2)

da2_adapter = New OleDb.OleDbDataAdapter
da2_adapter.InsertCommand = cmd2

另外,您需要将第一个数据适配器的AcceptChangesDuringFill 属性设置为False。这样,在填充 DataTable 后,它们不会将所有行的 RowState 设置为 Unchanged,而是保持为 Added 并准备好插入。

然后您需要在第二个数据适配器上调用Update 来保存数据,而不是调用检索数据的Fill

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多