0

我想检查我在方法 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;
        }
4

2 回答 2

4

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";
}

您还应该using为 SqlCommand 和 SqlConnection 考虑一个块。

于 2012-07-19T10:03:28.047 回答
1

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

int result = command.ExecuteNonQuery();

结果将是受 ExecutenonQuery() 影响的行数

于 2012-07-19T10:23:30.113 回答