[英]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.