C#怎么连接数据库 C#连接SQL Server数据库方法

来源:这里教程网 时间:2026-02-21 17:33:31 作者:

用 C# 连接 SQL Server 数据库,核心是使用 SqlConnection 类配合连接字符串,再通过 SqlCommand 执行查询或操作。关键不在“能不能连”,而在于连接字符串是否正确、资源是否及时释放、异常是否合理处理。

准备连接字符串

连接字符串包含服务器地址、数据库名、身份验证方式等信息,是最容易出错的一环。

Windows 身份验证(本地开发常用):
"Server=localhost\SQLEXPRESS;Database=MyDB;Trusted_Connection=True;"
SQL Server 账户密码验证:
"Server=192.168.1.100;Database=MyDB;User Id=myuser;Password=mypass;"
注意:实例名(如 SQLEXPRESS)、端口(默认1433,非默认需加 ,1433)、数据库是否存在,都影响连接成败

基础连接与查询示例

using 确保 SqlConnection 和 SqlCommand 自动释放,避免连接泄漏。

string connStr = "Server=localhost\SQLEXPRESS;Database=MyDB;Trusted_Connection=True;";
using (var conn = new SqlConnection(connStr))
{
    try
    {
        conn.Open();
        using (var cmd = new SqlCommand("SELECT COUNT(*) FROM Users", conn))
        {
            int count = (int)cmd.ExecuteScalar();
            Console.WriteLine($"用户总数:{count}");
        }
    }
    catch (SqlException ex)
    {
        Console.WriteLine($"数据库错误:{ex.Message}");
    }
}

执行增删改操作(带参数防注入)

永远别拼接 SQL 字符串!用 SqlParameter 传递值,既安全又支持类型校验。

插入示例:
cmd.CommandText = "INSERT INTO Users (Name, Email) VALUES (@name, @email)";
cmd.Parameters.AddWithValue("@name", "张三");
cmd.Parameters.AddWithValue("@email", "zhang@example.com");
参数名必须和 SQL 中一致;AddWithValue 方便但类型推断有时不准,生产环境建议用 new SqlParameter("@name", SqlDbType.NVarChar) { Value = "张三" }

连接池与超时控制

SqlConnection 默认启用连接池,提升性能。但要注意:

连接字符串**完全相同**才复用连接池;大小写、空格、顺序不同都会新建池 超时默认 15 秒,可在连接字符串加 "Connection Timeout=30;" 长时间运行的命令,单独设置 SqlCommand.CommandTimeout(单位秒),不干扰连接超时

基本上就这些。不复杂但容易忽略细节——连得上只是第一步,连得稳、查得准、放得干净,才算真正用好了。

相关推荐