You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6.0中DataGridView无法加载SQL Server数据表,.NET 4.8正常如何排查?

排查.NET 6.0中DataGridView无法显示Recipes表数据的原因

可能的失效原因及对应解决步骤

  • 资源管理不规范:原代码手动调用Dispose,若中间出现异常会导致资源未正常释放,干扰后续数据绑定。.NET 6推荐用using语句自动管理资源生命周期。
  • 连接字符串配置问题:升级后cs变量对应的连接字符串可能因配置文件结构变更(如从app.config转为appsettings.json)失效,需确认连接字符串格式及读取逻辑正确。
  • SqlClient命名空间兼容性:.NET 6官方推荐使用Microsoft.Data.SqlClient替代旧版System.Data.SqlClient,若项目仍引用旧命名空间,可能存在隐性兼容性问题。
  • DataGridView未触发绑定刷新:部分场景下仅设置DataSource不足以触发UI更新,需手动调用刷新方法。

修正后的完整可运行代码

// 确保已安装Microsoft.Data.SqlClient NuGet包
using Microsoft.Data.SqlClient;
using System.Data;
using System.Windows.Forms;

private void btnViewAll_Click(object sender, EventArgs e)
{
    try
    {
        string connectionString = cs; // 确认cs为有效连接字符串

        using (SqlConnection cn = new SqlConnection(connectionString))
        {
            string query = "SELECT * FROM Recipes";
            using (SqlCommand cmd = new SqlCommand(query, cn))
            {
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    da.Fill(dt);

                    // 先清空再绑定,避免旧数据残留
                    dgvRecipes.DataSource = null;
                    dgvRecipes.DataSource = dt;
                    // 强制刷新DataGridView绑定
                    dgvRecipes.ResetBindings();
                }
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"操作失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

额外验证步骤

  1. 安装Microsoft.Data.SqlClient NuGet包:.NET 6 WinForms项目默认不包含该包,需手动安装。
  2. 检查DataTable数据:在da.Fill(dt)后添加Console.WriteLine($"读取到{dt.Rows.Count}条数据"),确认是否成功从数据库获取数据。
  3. 验证连接字符串:可在代码中单独测试连接是否能正常打开,排除数据库连接失败的可能。

内容的提问来源于stack exchange,提问作者Harvey Mitchell Hermoza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:26:31