如何获得受影响的行数,如果它在 c# 中的 运行 sql 脚本中遇到 sql 异常
How to get the number of rows affected, if it hits sql exception while running the sql script in c#
如果 ExecuteNonQuery()
命中 SqlException
,我需要获得受影响的行数。在 C# 中调试时,我能够看到受影响的行数,但无法看到,比如-
cmd.InternalRecordsAffected
cmd._rowsAffected
我已经尝试将以下代码与 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();
}
}
}
异常,获取 rowsAffected 为 -1,但需要实际计数。
我最终得到了在每个 sql 语句后添加 'GO' 并在 运行 c# 脚本文件中拆分的解决方案,因此,我将获得受影响的行,直到发生异常,其余查询将不会执行。
如果 ExecuteNonQuery()
命中 SqlException
,我需要获得受影响的行数。在 C# 中调试时,我能够看到受影响的行数,但无法看到,比如-
cmd.InternalRecordsAffected
cmd._rowsAffected
我已经尝试将以下代码与 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();
}
}
}
异常,获取 rowsAffected 为 -1,但需要实际计数。
我最终得到了在每个 sql 语句后添加 'GO' 并在 运行 c# 脚本文件中拆分的解决方案,因此,我将获得受影响的行,直到发生异常,其余查询将不会执行。