从 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 查询中捕获计数的主要内容,如果未能解决你的问题,请参考以下文章