如何在C#.net中获取此计数查询

时间:2013-04-04 06:17:36

标签: c# .net

以下编码执行但该值未在屏幕上打印

 protected void Button1_Click(object sender, EventArgs e)
    {
        if (CheckBox1.Checked)
        {

        string OIMSquery = "SELECT COUNT(name) AS PolicySold FROM TestDate WHERE name='divi'";
        SqlCommand OIMScmd = new SqlCommand(OIMSquery, OIMS_01);
        OIMS_01.Open();
        OIMScmd.ExecuteNonQuery();
        OIMS_01.Close();      

        }       
   }

7 个答案:

答案 0 :(得分:3)

您应该致电ExectueScaler,如

int count = (int) OIMScmd.ExecuteScalar();

ExecuteScalar

  

执行查询,并返回第一行的第一列   查询返回的结果集。其他列或行是   忽略。

答案 1 :(得分:1)

使用ExecuteScalar()获取单个值

string OIMSquery = "SELECT COUNT(name) AS PolicySold FROM TestDate WHERE name='divi'";
SqlCommand OIMScmd = new SqlCommand(OIMSquery, OIMS_01);
OIMS_01.Open();
int _result = Convert.ToInt32(OIMScmd.ExecuteScalar());
OIMS_01.Close(); 

答案 2 :(得分:1)

你有一个查询。因此这个电话不合适:

OIMScmd.ExecuteNonQuery();

相反,您应该使用ExecuteScalar()

int count = (int) OIMScmd.ExecuteScalar();

(它可能会返回long而不是int - 我不能随意回复。)

此外,您应该为using使用SqlCommand语句,并为每个操作创建一个新连接:

using (var connection = new SqlConnection(...))
{
    connection.Open();
    using (var command = new SqlCommand(query, connection))
    {
        int count = (int) command.ExecuteScalar();
        // Now use the count
    }
}

还不清楚这是什么类型的应用程序 - 如果它在本地GUI(WinForms或WPF)中,您应该在UI线程上执行数据库访问。在数据库访问发生时,UI将被冻结。 (如果这是在Web应用程序中,则每次创建新的数据库连接更为重要......您不希望两个单独的请求同时尝试使用相同的连接。)

答案 3 :(得分:0)

使用SqlCommand.ExecuteScalar()代替ExecuteNonQuery(),而不返回任何内容。

答案 4 :(得分:0)

您需要使用:ExecuteScalar()

  

执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。

int result = Convert.ToInt32(OIMScmd.ExecuteScalar());

而不是

OIMScmd.ExecuteNonQuery();

答案 5 :(得分:0)

您可以使用SqlCommand.ExecuteScalar方法;

  

执行查询,并返回第一行的第一列   查询返回的结果集。其他列或行是   忽略。

int i = (int)OIMScmd.ExecuteScalar();

由于此方法返回object,因此您应该将其转换为int

 using (SqlConnection OIMS_01 = new SqlConnection(connString))
 {
      SqlCommand OIMScmd = new SqlCommand(OIMSquery, OIMS_01);
      try
      {
          OIMS_01.Open();
          int i = (int)OIMScmd.ExecuteScalar();
      }
      catch (Exception ex)
      {
          Console.WriteLine(ex.Message);
      }
 }

答案 6 :(得分:0)

尝试,OIMScmd.ExecuteReader();方法返回SqlDataReader类的对象,然后从中读取值。

OR

使用,Convert.ToInt32(OIMScmd.ExecuteScalar()),然后打印该值。