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