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 ServerTrustServerCertificate=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
相关产品推荐
相关产品推荐

