C# 如何从sql数据库检索asp.net mvc中的行数计数?
如果根据查询返回的行数大于0,我将尝试打印一些内容:C# 如何从sql数据库检索asp.net mvc中的行数计数?,c#,mysql,asp.net,C#,Mysql,Asp.net,如果根据查询返回的行数大于0,我将尝试打印一些内容: using (SqlConnection con = new SqlConnection("ConnectionString")){ con.Open(); string query = "SELECT COUNT(*) FROM Some_Table WHERE Val > 5"; SqlCommand cmd = new SqlCommand(query, con); cmd.ExecuteNonQuery(); /
using (SqlConnection con = new SqlConnection("ConnectionString")){
con.Open();
string query = "SELECT COUNT(*) FROM Some_Table WHERE Val > 5";
SqlCommand cmd = new SqlCommand(query, con);
cmd.ExecuteNonQuery(); // get the value of the count
if (count > 0)
{
Console.WriteLine("Returned more than 0 rows");
}
else
{
Console.WriteLine("Did not return more than 0 rows");
}
Console.ReadLine();
}
如何查找返回的行数?您可以这样做,因为-返回受影响的行数
int numberOfRecords = cmd.ExecuteNonQuery();
if (numberOfRecords > 0)
{
Console.WriteLine("Returned more than 0 rows");
}
else
{
Console.WriteLine("Did not return more than 0 rows");
}
即使不存在行,查询也始终返回一行。如果
WHERE
条件不存在行,则返回0
使用
ScalarValue
将返回查询结果第一行的第一列。因此,对于您的查询,这是检索所需信息的更有效的方法。使用DataSet
获取计数
SqlCommand cmd = new SqlCommand(query, con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
var count = ds.Tables[0].Rows.count;
SQLClient命令对象的ExecuteScalar()方法专门用于从查询返回单个值。它在代码和性能方面更高效
using (SqlConnection conn = new SqlConnection("ConnectionString"))
{
conn.Open();
string query = "SELECT COUNT(*) FROM Some_Table WHERE Val > 5";
SqlCommand command = new SqlCommand(query, con);
Int32 count = (Int32) cmd.ExecuteScalar()
}
这不会返回1吗?这对OP的查询不起作用-
SELECT COUNT(*)
将始终返回1行。非常感谢@Sajeetharan。但是,我在使用这个时遇到了问题。WebMatrix中数据库帮助程序的可能副本比过于冗长的SqlCommand方法更容易阅读和使用-对于新手来说,这似乎要好得多。@JamesHarcourt,我认为这是基于观点的。我认为,对于新手来说,了解ADO.NET的工作原理要好得多。
using (SqlConnection conn = new SqlConnection("ConnectionString"))
{
conn.Open();
string query = "SELECT COUNT(*) FROM Some_Table WHERE Val > 5";
SqlCommand command = new SqlCommand(query, con);
Int32 count = (Int32) cmd.ExecuteScalar()
}