如何使用存储过程从 ASP.NET 记录计数?
Posted
技术标签:
【中文标题】如何使用存储过程从 ASP.NET 记录计数?【英文标题】:How to record count from ASP.NET using stored procedure? 【发布时间】:2021-06-19 17:37:36 【问题描述】:我试图输出总共有 5 个存款人的数量,但是当我运行程序时它只输出 1 个。我为此使用了存储过程。我认为在下面的代码中缺少某些东西,我不知道。我尽力在网上搜索。
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
CountAllUsers();
protected void CountAllUsers()
using (mysqlConnection mycon = new MySqlConnection(constring))
mycon.Open();
MySqlCommand cmd = new MySqlCommand("countallusers", mycon);
cmd.CommandType = CommandType.StoredProcedure;
MySqlDataAdapter adx = new MySqlDataAdapter(cmd);
DataSet ds= new DataSet();
adx.Fill(ds);
mycon.Close();
lblDepositors.Text = ds.Tables[0].Rows.Count.ToString();
【问题讨论】:
您不需要存储过程,也不需要使用DataAdapter
- 只需在MySqlCommand
中运行SELECT COUNT(*) FROM tableName
查询。
@Dai 可以。谢谢!
【参考方案1】:
您可以使用ExecuteScalar
进行记录数的查询。将TABLE_NAME
替换为您的表格。
仅供参考,您不必调用mycon.Close();
,因为您应用 using 语句,当它结束时,它将自动处理连接。
更新:
根据@Dai 的建议,为Disposable
最佳实践添加了使用MySqlCommand 块。
protected void CountAllUsers()
using (MySqlConnection mycon = new MySqlConnection(constring))
using (MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM TABLE_NAME", mycon))
cmd.CommandType = CommandType.Text;
mycon.Open();
var count = Convert.ToInt32(cmd.ExecuteScalar());
lblDepositors.Text = count.ToString();
MySqlCommand.ExecuteScalar Method
ExecuteScalar 方法从数据库中检索单个值(例如,聚合值)。
【讨论】:
您也应该将命令包装在 using 块中。 好的,我认为最好将 MySqlCommand 与 using 块一起应用,因为 Dispose 方法支持它,并在流程结束后应用最佳实践来释放资源。无论如何感谢您的推荐。【参考方案2】:我已经解决了。谢谢!
protected void CountAllUsers()
using (MySqlConnection mycon = new MySqlConnection(constring))
mycon.Open();
MySqlCommand cmd = new MySqlCommand("SELECT COUNT(id) as count from depositors_tbl", mycon);
MySqlDataAdapter ada = new MySqlDataAdapter();
DataSet dt = new DataSet();
ada.SelectCommand = cmd;
ada.Fill(dt);
mycon.Close();
lblDepositors.Text = dt.Tables[0].Rows[0]["count"].ToString();
【讨论】:
你不需要使用MySqlDataAdapter
- 你的代码比它需要的更复杂。另外,MySqlDataAdapter
不支持异步 IO。以上是关于如何使用存储过程从 ASP.NET 记录计数?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ASP.NET 调用具有多个输入值的 MySQL 存储过程
如何从 ASP.NET Core Web API 中的 SQL Server 存储过程中获取返回值
asp.net mvc 从视图中的文本框获取数据返回存储过程以编辑记录