1

下面的代码正在执行,但该值未在屏幕上打印

 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();      

        }       
   }
4

7 回答 7

3

你应该像这样调用ExectueScaler

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

执行标量

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

于 2013-04-04T06:19:07.263 回答
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(); 
于 2013-04-04T06:19:11.157 回答
1

你有一个查询。因此这个调用是不合适的:

OIMScmd.ExecuteNonQuery();

相反,您应该使用ExecuteScalar()

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

(它可能会返回 along而不是 an 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 应用程序中,更重要的是每次都创建一个新的数据库连接……您不希望两个单独的请求同时尝试使用同一个连接。)

于 2013-04-04T06:19:16.710 回答
0

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

或者

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

于 2013-04-04T06:28:58.617 回答
0

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

于 2013-04-04T06:19:33.690 回答
0

您需要使用:ExecuteScalar()

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

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

代替

OIMScmd.ExecuteNonQuery();
于 2013-04-04T06:19:42.660 回答
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);
      }
 }
于 2013-04-04T06:19:59.177 回答