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

时间:2011-06-01 06:56:18

标签: asp.net sql sql-server visual-studio-2008

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

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

有人可以重新编写这段代码吗?

Try
    Using conn = New SqlConnection(constr)
        Using cmd = conn.CreateCommand()
            conn.Open()
            Dim sql As String = 
               "UPDATE a1_ticket 
                  SET Ticket_no =@ticketNo, 
                  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

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

修改SQL语句以更新两个表。

答案 2 :(得分:0)

使用存储过程是代码最明智的方法。如果你觉得这样做不舒服,我相信你可以这样做:


Try
    Using conn = New SqlConnection(constr)
        Using cmd = conn.CreateCommand()
            conn.Open()
            Dim sql As String = "UPDATE a1_ticket SET Ticket_no =@ticketNo, 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 =@ticketNo, 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中是不可能的。

答案 3 :(得分:0)

您也可以使用

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

                       Query for second update;";   

答案 4 :(得分: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和参数发送给函数并让它完成所有工作..