WPF C#如何修改SQL存储过程插入聚合数据后返回内容更新DataGrid
可行解决方案
无法仅通过修改存储过程直接更新DataGrid:存储过程运行在数据库侧,无法直接操作WPF前端控件,仅需修改存储过程+少量配套C#代码即可实现需求,不需要新增点击按钮操作,适配你当前未使用数据绑定的场景。
第一步:修改存储过程,插入完成后直接返回聚合后的数据
调整存储过程逻辑,插入操作执行完成后直接查询返回最新的聚合结果,避免后续单独查询时出现事务未提交、连接隔离级别的问题:
create procedure [你的存储过程名称] as begin -- 原有插入+聚合计算逻辑保持不变 insert into dbo.myTable(/* 你的列名列表 */) select column1, column2, column3, /* 原有聚合计算逻辑保留 */ from tblMyTable -- 新增以下行,插入完成后直接返回目标表全量聚合后数据 select * from dbo.myTable end
第二步:C#端调整调用逻辑,直接用存储过程返回的结果更新DataGrid
这段代码直接接在你原有调用存储过程的导入逻辑后面即可,不需要新增按钮触发,无需数据绑定即可生效:
// 替换为你实际使用的数据库连接字符串 string connStr = "你的数据库连接字符串"; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); SqlCommand cmd = new SqlCommand("你的存储过程名称", conn); cmd.CommandType = CommandType.StoredProcedure; // 原有给存储过程传参的逻辑(如果有)保持不变 // 执行存储过程,直接接收返回的聚合后结果集 SqlDataAdapter sda = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); sda.Fill(dt); // 直接更新DataGrid展示内容 你的DataGrid控件名称.ItemsSource = dt.DefaultView; }
之前单独查询失败的常见原因
- 单独查询时存储过程的插入操作还未提交事务,导致读到旧数据
- 插入、查询两次操作使用了不同的连接,受事务隔离级别限制看不到最新写入的内容
- 单独查询时连接字符串配置错误,访问到了其他库/实例的表
内容的提问来源于stack exchange,提问作者user16600932
相关产品推荐
相关产品推荐

