2012-07-19 67 views
0

我想检查我的查询是否在方法ExecuteNonQuery()正在运行。 这里是我在我的WCF服务代码:如何检查我的查询是否正在ExecuteNonQuery()方法中运行?

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

回答

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块。

+0

谢谢你,它工作的行数。我还有一个关于我的问题的问题,正如你可以在'string cmdStr = String.Format(query)'中看到的那样;'我想把'query'放在'SELECT'或'INSERT'之类的东西,为什么它可以'运行该查询并只执行存储过程?再次感谢:) – blankon91 2012-07-20 01:07:40

+0

更新:我很抱歉,但当我尝试运行'select * from my_table'时,它显示-1,但在我的数据库管理中显示'(10行受影响) '为什么在我的成功报告没有显示'10'? – blankon91 2012-07-20 02:36:41

+1

对不起,我的回答并不清楚,它只返回受插入/删除/更新影响的行,而不是选择。为什么你会为Select语句使用ExecuteNonQuery()?如果你需要知道满足一定条件的行数,可以使用'COUNT'和'ExecuteScalar()' – GarethD 2012-07-20 07:53:20

1

可以测试WCF服务在本地以及你可以确认ExecuteNonQuery()工作

int result = command.ExecuteNonQuery(); 

结果将受到的ExecuteNonQuery()

相关问题