2011-06-01 35 views
0

如何使用此Sql代码段运行两个更新Sql查询?如何使用下面的代码片段运行两个查询?

下面提到只在一个表被更新的值的代码....我想更新下面提到中使用的代码两个不同的表的数据:

任何人可以重新编辑这个代码?

Try 
    Using conn = New SqlConnection(constr) 
     Using cmd = conn.CreateCommand() 
      conn.Open() 
      Dim sql As String = 
       "UPDATE a1_ticket 
        SET Ticket_no [email protected], 
        BANK = @bank, 
        PAID = @paid, 
        BID = @bid 
       WHERE ITC = @ticketNo" 
      cmd.CommandText = sql 
      cmd.Parameters.AddWithValue("@bank", Literal20.Text) 
      cmd.Parameters.AddWithValue("@paid", Label1.Text) 
      cmd.Parameters.AddWithValue("@bid", Literal21.Text) 
      cmd.Parameters.AddWithValue("@ticketNo", Literal3.Text) 
      cmd.ExecuteNonQuery() 
     End Using 
    End Using 
Catch ex As Exception 
    Response.Write(ex.Message) 
End Try 
+0

这两个表是如何相关的?请提供有关架构的更多信息。你想用一个UPDATE语句更新两个表吗? – 2011-06-01 06:58:10

+0

相同的更新命令两次 – 2011-06-01 06:59:19

回答

3

创建Stored Procedure,更新两个表,并使用StoredProcedure的命令执行它...

command.CommandType = CommandType.StoredProcedure; 
command.CommandText = "UpdateTheTwoTables"; 
.... 
0

修改SQL语句更新两个表。

0

使用存储过程是代码明智的最清洁的方式。如果你不舒服做这样的,我相信你能做到这一点是这样的:


Try 
    Using conn = New SqlConnection(constr) 
     Using cmd = conn.CreateCommand() 
      conn.Open() 
      Dim sql As String = "UPDATE a1_ticket SET Ticket_no [email protected], BANK = @bank, PAID = @paid, BID = @bid WHERE ITC = @ticketNo" 
      cmd.CommandText = sql 
      cmd.Parameters.AddWithValue("@bank", Literal20.Text) 
      cmd.Parameters.AddWithValue("@paid", Label1.Text) 
      cmd.Parameters.AddWithValue("@bid", Literal21.Text) 
      cmd.Parameters.AddWithValue("@ticketNo", Literal3.Text) 
      cmd.ExecuteNonQuery() 
     End Using 
// 
     Using cmd = conn.CreateCommand() 
      conn.Open() 
      Dim sql As String = "UPDATE a2_ticket SET Ticket_no [email protected], BANK = @bank, PAID = @paid, BID = @bid WHERE ITC = @ticketNo" 
      cmd.CommandText = sql 
      cmd.Parameters.AddWithValue("@bank", Literal20.Text) 
      cmd.Parameters.AddWithValue("@paid", Label1.Text) 
      cmd.Parameters.AddWithValue("@bid", Literal21.Text) 
      cmd.Parameters.AddWithValue("@ticketNo", Literal3.Text) 
      cmd.ExecuteNonQuery() 
     End Using 
    End Using 
Catch ex As Exception 
    Response.Write(ex.Message) 
End Try 

这是什么,我想说的草图,你可能想改变一些东西在这里和那里,但重要的是你可以一个接一个地更新你的两张桌子。在一个更新语句afaik中是不可能的。

0

你也可以使用

Dim sql As String = @ "Query for first update; 

         Query for second update;"; 
0

以及你还没有谈到第二个表,或者你发送它的数据什么。我还没有把这个通过编译器来验证,但我建议这个概念将是

你可以这样做:

void UpdateDB(String sql, String[][] params) 
{ 
Try 
{ 
    SqlConnection conn = New SqlConnection(constr); 
     SqlCommand cmd = conn.CreateCommand(); 
      conn.Open(); 
      cmd.CommandText = sql; 
      for(int i=0; i<params.length; i++) 
      { 
       cmd.Parameters.AddWithValue(params[i,0] params[i,1]); 
      } 
      cmd.ExecuteNonQuery(); 
} 
Catch (Exception ex) 
{ 
    Response.Write(ex.Message); 
} 
} 

例如发送SQL和参数的功能,有它做的一切工作..

相关问题