SQL嵌套迭代从另一个ASP.NET VB更新一个表

时间:2013-08-05 15:09:34

标签: asp.net sql vb.net

我正在寻找有关完成以下任务的最佳方法的建议。我需要运行一个最多可以提取200行的SQL查询。对于每一行,我需要从该行获取数据并将其插入另一个表中。起初我以为我会嵌套数据库连接,就像我下面列出的代码示例一样。然而,我想知道这是不正确的做法,以及更好的方式。

有什么想法吗?

Dim dbconn As New SqlConnection
Dim dbconn2 As New SqlConnection
dbconn = New         SqlConnection(ConfigurationManager.ConnectionStrings("databaseName").ConnectionString
dbconn2 = New SqlConnection(ConfigurationManager.ConnectionStrings("databaseName").ConnectionString
dbconn.Open() 
Dim cmd As New SQLCommand
Dim cmd2 As New SQLCommand
Dim UserReader As SqlDataReader 

Dim cmdStringSource As String = "SELECT approx 25 fields WHERE fldRandomField = 26"
Dim cmdStringUpdate As String
cmd = New SQLCommnd(cmdStringSource, dbconn)
UserReader = cmdExecuteReader()
If UserReader.HasRows Then
While UserReader.Read()
    cmdStringUpdate = "UPDATE tblUpdate SET a whole bunch of stuff from the cmdStringSource current record"
    dbconn2.Open()
    cmd2=New SQLCommand(cmdStringUpdate, dbconn2)
    cmd2.ExecuteNonQuery()
    dbconn2.close()
End While
End If
UserReader.Close()
dbconn.close() 

1 个答案:

答案 0 :(得分:3)

不是在循环中使用多个连接和数据引导器完成此操作 - 而是完全在后端完成。

SQL Server支持从例如

插入
INSERT INTO Table1 (field1, field2, field3 ...)
SELECT field1, field2, field3 FROM FROM Table2 
WHERE <some condition>

同样适用于UPPDATE,例如

UPDATE Table1
  SET Table1.Field1 = Table2.Field1,
      Table1.Field2 = Table2.Field2
      Table1.Field3 = Table2.Field3
  FROM Table1 INNER JOIN Table2
  ON Table1.CommonField = Table2.CommonField
WHERE <some condition>

只需构建此语句,并使用单个连接和ExecuteNonQuery命令调用它一次。