Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从sql数据库检索asp.net mvc中的行数计数?_C#_Mysql_Asp.net - Fatal编程技术网

C# 如何从sql数据库检索asp.net mvc中的行数计数?

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

如果根据查询返回的行数大于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(); // 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()
}