从 SQL 查询中捕获计数

Posted

技术标签:

【中文标题】从 SQL 查询中捕获计数【英文标题】:Capturing count from an SQL query 【发布时间】:2021-04-17 11:59:24 【问题描述】:

在 C#(.cs 文件)中从 SQL 命令获取计数的最简单方法是什么

SELECT COUNT(*) FROM table_name

int 变量中?

【问题讨论】:

【参考方案1】:

使用SqlCommand.ExecuteScalar() 并将其转换为int

cmd.CommandText = "SELECT COUNT(*) FROM table_name";
Int32 count = (Int32) cmd.ExecuteScalar();

【讨论】:

是的,里面的例子也涵盖了这一点,只需将INSERT INTO 更改为您的SELECT 语句.. 在这种情况下,总会有一个int类型的返回值。在更一般的情况下,您可能会得到 DBNull 的返回值,例如“从 table1 中选择 ssn,其中 company_id = '112233'”。由于您无法将 DBNull 转换为您的返回数据类型,因此您可以在 SQL 或您的应用程序中对其进行测试和更改。 @SearchForKnowledge 检查返回的值是一个可以转换为 Int32 的值。您很有可能正在尝试转换单词。 @SearchForKnowledge 尝试使用 Convert.ToInt32(cmd.ExecuteScalar()) 而不是强制转换。 使用 long 而不是 int 作为返回类型【参考方案2】:
SqlConnection conn = new SqlConnection("ConnectionString");
conn.Open();
SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM table_name", conn);
Int32 count = (Int32) comm .ExecuteScalar();

【讨论】:

这和我的回答不一样吗? 为了清楚起见,连接字符串通常是一个字符串,其中包含有关您连接到哪个数据库的信息。示例:“服务器=myServerAddress;Database=myDataBase;Trusted_Connection=True;”这将使用您在计算机上运行的相同凭据登录到数据库。【参考方案3】:

您会遇到以下转换错误:

cmd.CommandText = "SELECT COUNT(*) FROM table_name";
Int32 count = (Int32) cmd.ExecuteScalar();

改用:

string stm = "SELECT COUNT(*) FROM table_name WHERE id="+id+";";
mysqlCommand cmd = new MySqlCommand(stm, conn);
Int32 count = Convert.ToInt32(cmd.ExecuteScalar());
if(count > 0)
    found = true; 
 else 
    found = false; 

【讨论】:

我有一个问题......如果我想使用文本框在字符串上的位置,例如:- string stm = "SELECT COUNT(*) FROM table_name WHERE name="+Name.Text 。修剪()+";" ;【参考方案4】:

在 C# 中使用 SQL 进行补充:

SqlConnection conn = new SqlConnection("ConnectionString");
conn.Open();
SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM table_name", conn);
Int32 count = Convert.ToInt32(comm.ExecuteScalar());
if (count > 0)

    lblCount.Text = Convert.ToString(count.ToString()); //For example a Label

else

    lblCount.Text = "0";

conn.Close(); //Remember close the connection

【讨论】:

【参考方案5】:
int count = 0;    
using (new SqlConnection connection = new SqlConnection("connectionString"))

    sqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM table_name", connection);
    connection.Open();
    count = (int32)cmd.ExecuteScalar();

【讨论】:

以上是关于从 SQL 查询中捕获计数的主要内容,如果未能解决你的问题,请参考以下文章

由于计数,db2/sql 查询不允许从连接中选择静态值

SQL查询根据值和字段名从两个表中获取计数

Spark SQL 用于从两个不同的查询中划分计数并将输出存储为 Double

SQL 计数查询

sql查询计数连接中的记录数

Oracle SQL:从一个表中选择一个计数,从另一个表中使用子查询缩小选择范围