Visual Studio 2022中C# WinForms连接SQL Server失败求助
问题排查:WinForms连接SQL Server提示“无法连接到主机”
核心错误:误用MySQL驱动连接SQL Server
你要连接的是SQL Server,但代码里全程使用的是MySQL的驱动组件(MySql.Data.MySqlClient、MySqlConnection)——这是两种完全独立的数据库,驱动不通用,这是导致连接失败的根本原因。
修正步骤
1. 替换驱动与命名空间
- 移除项目中
MySql.Data相关的NuGet包引用 - 保留/添加SQL Server的官方驱动:.NET Framework用
System.Data.SqlClient,.NET 6+推荐用Microsoft.Data.SqlClient(通过NuGet安装)
2. 修正代码逻辑
因为你用SSMS是通过Windows身份验证直接连接,所以连接字符串采用相同模式,无需手动输入账号密码:
using System; using System.Windows.Forms; using System.Data.SqlClient; // 注意:SQL Server的命名空间 namespace Database_Project2 { public partial class Form3 : Form { // Windows身份验证的连接字符串(适配本地SQL Server) SqlConnection connection = new SqlConnection(@"Server=.\SQLEXPRESS;Database=BikeCompany;Integrated Security=True;"); public Form3() { InitializeComponent(); } private void Form3_Load(object sender, EventArgs e) { try { connection.Open(); MessageBox.Show("数据库连接成功!"); } catch (Exception ex) { MessageBox.Show($"连接失败:{ex.Message}"); } } } }
连接字符串关键点说明
Server=.\SQLEXPRESS:本地SQL Server Express实例的默认命名;如果是SQL Server默认实例,可写成Server=(local)或Server=127.0.0.1Integrated Security=True:启用Windows身份验证,和你SSMS的连接逻辑一致- 若你的SQL Server是自定义命名实例,需替换为SSMS连接时显示的服务器名称
额外排查项
- 确认SQL Server服务已启动:打开「服务」管理器,找到
SQL Server(你的实例名),确保状态为「正在运行」 - 检查SQL Server连接设置:在SSMS中右键服务器→「属性」→「连接」,勾选「允许远程连接到此服务器」(本地连接默认允许,可作为兜底检查)
- 临时关闭防火墙测试:若本地连接仍失败,可临时关闭系统防火墙,排除端口拦截问题(SQL Server默认端口1433)
内容的提问来源于stack exchange,提问作者Fred calascibetta
相关产品推荐
相关产品推荐

