用C#连接SQL Server数据库,核心是使用 SqlConnection 类配合正确的连接字符串。只要字符串写对、引用了
System.Data.SqlClient(.NET Framework)或
Microsoft.Data.SqlClient(.NET Core/.NET 5+),就能稳定建立连接。
准备基础依赖
根据你的项目类型选择对应包:
.NET Framework 项目:默认已含System.Data.SqlClient,无需额外安装 .NET Core / .NET 5+ / .NET 6+ 项目:需通过 NuGet 安装 Microsoft.Data.SqlClient(官方推荐,支持最新功能和安全更新)
安装命令(包管理器控制台):
Install-Package Microsoft.Data.SqlClient
写对连接字符串
连接字符串包含服务器地址、数据库名、认证方式等关键信息。常见格式如下:
Windows 身份验证(本地开发常用):"Server=localhost\SQLEXPRESS;Database=MyDB;Trusted_Connection=true;" SQL Server 账户密码登录(生产环境常用):
"Server=192.168.1.100;Database=MyDB;User Id=myuser;Password=mypass;" 注意端口(非默认1433时要显式指定):
"Server=192.168.1.100,1434;Database=MyDB;..."
建议把连接字符串放在
appsettings.json(.NET Core+)或
App.config(.NET Framework)中统一管理,避免硬编码。
用 using 正确打开和关闭连接
SqlConnection 实现了
IDisposable,必须用 using 确保及时释放资源,防止连接泄漏:
string connStr = "Server=...;Database=...;...";
using (var conn = new SqlConnection(connStr))
{
try
{
conn.Open();
Console.WriteLine("连接成功!");
// 执行查询、增删改等操作
}
catch (SqlException ex)
{
Console.WriteLine($"数据库错误:{ex.Message}");
}
} // 这里自动调用 conn.Close() 和 Dispose()
执行简单查询示例
连接后通常配合 SqlCommand 和 SqlDataReader 或 ExecuteScalar/ExecuteNonQuery 使用:
查单个值(如统计数量):cmd.ExecuteScalar()执行增删改:
cmd.ExecuteNonQuery()读取多行结果:
cmd.ExecuteReader()配合 while 循环
示例(查用户名):
using (var conn = new SqlConnection(connStr))
{
conn.Open();
using (var cmd = new SqlCommand("SELECT TOP 1 Name FROM Users", conn))
{
var name = cmd.ExecuteScalar();
Console.WriteLine(name?.ToString() ?? "无数据");
}
}
基本上就这些。不复杂但容易忽略细节——比如忘了加
using、连错实例名、防火墙阻断端口、SQL Server 服务没启动,都会导致连接失败。先确保 SQL Server 正在运行、远程连接已启用、账户有权限,再检查代码逻辑。
