Как выполнить два запроса, используя фрагмент кода ниже? - PullRequest
0 голосов
/ 01 июня 2011

Как запустить два запроса на обновление 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 ]

3 голосов
/ 01 июня 2011

Создайте Stored Procedure, который обновит две таблицы, и выполните его, используя команду StoredProcedure ...

command.CommandType = CommandType.StoredProcedure;
command.CommandText = "UpdateTheTwoTables";
....
0 голосов
/ 01 июня 2011

Ну, а вы ничего не сказали о второй таблице или данных, которые вы ей отправляете. Я не проверил это через компилятор, но концепция, которую я бы предложил, была бы

Вы можете сделать:

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 и параметры в функцию и заставить ее выполнить всю работу.

0 голосов
/ 01 июня 2011

Вы также можете использовать

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

                       Query for second update;";   
0 голосов
/ 01 июня 2011

Использование хранимой процедуры - самый чистый способ кодирования.Если вам неудобно делать это таким образом, я уверен, что вы можете сделать это так:


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.

0 голосов
/ 01 июня 2011

Изменение оператора SQL для обновления двух таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...