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

C#连接SQL Server数据库并读取表数据遇连接崩溃求助

解决SQL Server与C# WinForms连接失败并读取数据的问题

一、先修复连接崩溃问题

连接失败的核心原因大多是连接字符串不完整或基础配置问题,先修正连接字符串:

你的原连接字符串缺少身份验证配置,Windows环境下优先用集成身份验证,补充后完整字符串如下:

string connectionString = @"Data Source=DESKTOP-REB699D\SQLEXPRESS;Initial Catalog=DBdemo;Integrated Security=True;TrustServerCertificate=True";
  • Integrated Security=True:用当前Windows用户身份登录SQL Server
  • TrustServerCertificate=True:规避新手环境常见的SSL证书验证错误

同时检查以下基础配置:

  • 确认SQL Server (SQLEXPRESS)服务已启动(打开系统服务管理器查看状态)
  • 验证数据库DBdemo确实存在于你的SQLEXPRESS实例中
  • 确保当前Windows用户拥有该数据库的访问权限

二、完整读取数据的实现代码

直接替换你的button1_Click方法,这段代码包含错误捕获、自动资源管理和数据读取逻辑:

using System.Data.SqlClient; // 必须添加该命名空间(.NET Core/.NET 6+用Microsoft.Data.SqlClient)
using System.Text;

private void button1_Click(object sender, EventArgs e)
{
    string connectionString = @"Data Source=DESKTOP-REB699D\SQLEXPRESS;Initial Catalog=DBdemo;Integrated Security=True;TrustServerCertificate=True";
    StringBuilder result = new StringBuilder();

    // using语句自动释放连接资源,无需手动调用Close
    using (SqlConnection cnn = new SqlConnection(connectionString))
    {
        try
        {
            cnn.Open();
            // 替换成你实际的表名,比如你的表叫UserNames就改成FROM UserNames
            string query = "SELECT name FROM 你的表名";
            using (SqlCommand cmd = new SqlCommand(query, cnn))
            {
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    // 逐行读取数据
                    while (reader.Read())
                    {
                        // 获取name列的值,索引0对应SELECT的第一个字段
                        string name = reader.GetString(0);
                        result.AppendLine(name);
                    }
                }
            }

            // 展示读取结果
            if (result.Length > 0)
            {
                MessageBox.Show("读取到的名称:\n" + result.ToString());
            }
            else
            {
                MessageBox.Show("表中无数据");
            }
        }
        catch (Exception ex)
        {
            // 捕获并显示具体错误信息,方便排查问题
            MessageBox.Show("出错了:\n" + ex.Message);
        }
    }
}

三、关键注意事项

  • 务必将代码中的你的表名替换为你实际的表名称
  • 确保文件顶部添加了对应的SqlClient命名空间
  • 用using包裹数据库相关对象,避免内存泄漏和资源占用
  • try-catch块能帮你定位具体错误(比如表不存在、权限不足等),而不是直接崩溃

内容的提问来源于stack exchange,提问作者Mahmoud Farid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:01:02