如何检查我的查询是否在方法ExecuteNonQuery()中运行?

时间:2012-07-19 09:54:36

标签: c# sql wcf

我想检查我在methode ExecuteNonQuery()中的查询是否正在运行。 这是我的WCF服务中的代码:

 public string Execute(string query){
            string connectionString = ConfigurationManager.ConnectionStrings["ConnWf"].ConnectionString;
            string hasil = "ERROR";
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                string cmdStr = String.Format(query);
                SqlCommand command = new SqlCommand(cmdStr, conn);
                command.Connection.Open();
                command.ExecuteNonQuery();

                //I want to check here..
                if (command.ExecuteNonQuery().HasRows) //it doesn't works :(
                {
                    hasil = "SUCCESS \n Row Affected: " + rd.RecordsAffected;

                }
                else
                {
                    hasil = "FAILED \n Row Affected: " + rd.RecordsAffected;
                }
                conn.Close();
            }
            return "Query: "+query+"\n Status: "+hasil;
        }

2 个答案:

答案 0 :(得分:3)

ExecuteNonQuery()返回一个整数,该整数将是受sql语句影响的行的总和。即如果SSMS返回:

(614 row(s) affected)

(123 row(s) affected)

ExecuteNonQuery()将返回737。

所以你可以使用这样的东西。

try
{
    hasil = string.Format("Success \n Rows Affected: {0}", command.ExecuteNonQuery());
}

catch
{
    hasil = "Failed \n Rows Affected: 0";
}

您还应该考虑使用SqlCommand和SqlConnection的using块。

答案 1 :(得分:1)

您也可以在本地测试WCF服务,并确认ExecuteNonQuery()正在运行

int result = command.ExecuteNonQuery();

结果将受ExecutenonQuery()

影响的行数