簡體   English   中英

如何在C#.net中獲取此計數查詢

[英]How To get this Count Query in 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();      

        }       
   }

您應該像這樣調用ExectueScaler

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

執行標量

執行查詢,並返回查詢返回的結果集中第一行的第一列。 其他列或行將被忽略。

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

您有一個查詢。 因此,此調用是不合適的:

OIMScmd.ExecuteNonQuery();

相反,您應該使用ExecuteScalar()

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

(這是可能的,它會返回一個long而不是int -我不知道不加思索)

此外,您應該對SqlCommand使用using語句,並為每個操作創建一個新連接:

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應用程序中,則每次創建一個新的數據庫連接就顯得尤為重要……您不希望兩個單獨的請求嘗試同時使用同一連接。)

使用SqlCommand.ExecuteScalar()而不是ExecuteNonQuery() ,后者不返回任何內容。

您需要使用: ExecuteScalar()

執行查詢,並返回查詢返回的結果集中第一行的第一列。 其他列或行將被忽略。

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

代替

OIMScmd.ExecuteNonQuery();

您可以使用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);
      }
 }

嘗試, OIMScmd.ExecuteReader(); 方法,該方法返回SqlDataReader類的對象,然后從中讀取值。

要么

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM