首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET Core / .NET Framework 六大數據庫連接字符串與最佳實踐總結

     編輯:ASP.NET 基礎

連接字符串速查表

數據庫提供者/驅動標準連接字符串模板關鍵參數
SQL ServerSystem.Data.SqlClient / Microsoft.Data.SqlClientServer=myServer;Database=myDB;User Id=sa;Password=pwd;TrustServerCertificate=True;TrustServerCertificate (本地開發), Encrypt, Connection Timeout
PostgreSQLNpgsqlHost=localhost;Database=myDB;Username=postgres;Password=pwd;Pooling=true;Pooling, Command Timeout, SSL Mode
MySQLMySql.Data / MySqlConnectorServer=localhost;Port=3306;Database=myDB;Uid=root;Pwd=pwd;CharSet=utf8mb4;CharSet=utf8mb4 (存 Emoji), SslMode, AllowPublicKeyRetrieval
OracleOracle.ManagedDataAccess.CoreData Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=scott;Password=tiger;TNS_ADMIN, Wallet (ATP), Pooling
SQLiteMicrosoft.Data.SqliteData Source=app.db;Cache=Shared;Mode=ReadWriteCreate;Cache=Shared (多線程), Foreign Keys=True
AccessSystem.Data.OleDbProvider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\data.accdb;Persist Security Info=False;需安裝 ACE Engine, .accdb 用 12.0, .mdb 用 4.0

通用最佳實踐代碼模板

// 1. 配置文件 appsettings.json / web.config
{
  "ConnectionStrings": {
    "Default": "Server=.;Database=MyApp;User=sa;Password=P@ssw0rd;TrustServerCertificate=True;"
  }
}

// 2. DbContext / 連接工廠註冊
public static class DbFactory
{
    private static readonly string _connStr = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;

    // ADO.NET 原生連接(高性能、Dapper 友好)
    public static SqlConnection CreateConnection() => new SqlConnection(_connStr);

    // Entity Framework Core
    public static DbContextOptions CreateOptions() => 
        new DbContextOptionsBuilder()
            .UseSqlServer(_connStr, o => o.EnableRetryOnFailure(3))
            .EnableSensitiveDataLogging(false) // 生產關閉
            .Options;
}

// 3. 正確使用模式:using 確保釋放
public async Task> GetUsersAsync()
{
    const string sql = "SELECT Id, Name, Email FROM Users WHERE IsActive=1 ORDER BY Id";
    using var conn = DbFactory.CreateConnection();
    await conn.OpenAsync();
    return (await conn.QueryAsync(sql)).AsList(); // Dapper
}

// 4. 參數化查詢(防注入、計劃緩存)
public async Task GetByIdAsync(int id)
{
    using var conn = DbFactory.CreateConnection();
    return await conn.QueryFirstOrDefaultAsync(
        "SELECT * FROM Users WHERE Id = @Id", new { Id = id });
}

// 5. 連接池優化:保持連接字符串完全一致
// 不要在運行時拼接字符串,改用 Configuration / IOptions 讀取

進階配置參數詳解

參數推薦值作用
Poolingtrue (默認)啟用連接池,極大降低 Open/Close 開銷
Min Pool Size0-5預熱連接數,冷啟動優化
Max Pool Size100 (默認)根據並發調整,防止連接耗盡
Connection Lifetime0 (默認)連接生存秒數,0=永不主動銷毀
Connect Timeout15-30建立連接最長等待,防止無限阻塞
Command Timeout30-120單條 SQL 執行超時,防止長查詢佔用連接
Encrypt / TrustServerCertificateTrue / True (開發)TLS 加密,生產建議 True/False 搭配有效證書

常見坑點與排查

  1. 「無法打開數據庫」:檢查防火牆、SQL Browser 服務、實例名稱、TCP/IP 協議啟用、端口 1433。
  2. 「登錄失敗」:確認認證模式、用戶名密碼、含特殊字符需在字符串中轉義或用配置文件。
  3. 「連接池耗盡」:代碼中漏 using / Close()、長事務、MaxPoolSize 過小。
  4. 「中文亂碼」:MySQL 必須 CharSet=utf8mb4,表/列字符集一致;SQL Server 使用 N 前綴參數 N'中文'。
  5. Oracle 「ORA-12154」:TNS 名稱解析失敗,檢查 tnsnames.ora 或改用 Easy Connect 字符串。

.NET Core 依賴注入整合

// Program.cs / Startup.cs
builder.Services.AddDbContext(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("Default"),
        sql => sql.EnableRetryOnFailure(3, TimeSpan.FromSeconds(5), null)));

// Repository 注入
builder.Services.AddScoped();

// 控制器使用
public class UserController : ControllerBase
{
    private readonly IUserRepository _repo;
    public UserController(IUserRepository repo) => _repo = repo;
}

掌握標準連接字符串、參數化查詢、連接池配置、依賴注入整合,即可覆蓋 99% .NET 數據庫訪問場景,代碼安全、高效、可維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved