Как получить количество затронутых строк, если оно достигает исключение sql при запуске сценария sql в c # - PullRequest
0 голосов
/ 11 апреля 2019

Мне нужно получить количество затронутых строк, если ExecuteNonQuery() достигнет SqlException.Я могу видеть количество затронутых строк при отладке в c #, но не могу его получить, например: *

cmd.*

Я уже пытался использовать приведенный ниже код вместе с оператором PRINT, но в моем случае это не сработало:

conn.InfoMessage += delegate (object sender, SqlInfoMessageEventArgs e)
{
     sqlMessage += "\n" + e.Message;
};

Наше приложение выполняет сценарии sql с использованием c #.Ниже приведен пример кода:

int rowsAffected = -1;

using (SqlConnection conn = new SqlConnection(connectionString))
{
    if (conn != null && conn.State != ConnectionState.Open)
    {
        conn.Open();
    }
    using (SqlCommand cmd = new SqlCommand())
    {
        cmd.Connection = conn;
        StreamReader reader = new StreamReader(strFilePath);
        string sqlQuery = reader.ReadToEnd();
        cmd.CommandText = sqlQuery;
        try
        {
            rowsAffected = cmd.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            //How to get the number of rows affected here?
        }
        if (conn.State != ConnectionState.Closed)
        {
            conn.Close();
        }
    }
}

В исключительных случаях получение строк влияет на -1, но требуется фактическое число.

1 Ответ

0 голосов
/ 11 апреля 2019

В итоге я решил добавить 'GO' после каждого оператора sql и разделить его при запуске файла сценария на c #, поэтому я буду получать количество затронутых строк до тех пор, пока не произойдет исключение, а остальные запросы будутне получить исполнение.

...