.net連接sql server數據庫字符串,權威的解釋

一直以來都是百度百度,從來沒認真總結,但是寫法卻有很多種莫衷一是,到底該怎麼寫,官方怎麼推薦的?

從官網找到一個權威的說法,如下連接字符串(公司在用)

<add name="ConnectionSetting" connectionString="Server=xxx.yyy.zzz,56001;uid=xx;pwd=xxx;database=xxx;pooling=true;Max Pool Size = 2000;" providerName="SQLServer" />

那麼到底什麼含義呢?

見如下官方給出清清楚楚的解釋

https://docs.microsoft.com/zh-cn/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view=netframework-4.8

劃出重點:

第一點:不區分大小寫!


 

第二點:各個關鍵字的解釋

關鍵字:server

關鍵字:pwd 

關鍵字:uid

 關鍵字:pooling

關鍵字 max pool size

 官方實例SqlConnection用的字符串:
string connectionString ="Data Source=(local);Initial Catalog=Northwind;"+ "Integrated Security=true";

簡而言之:連接本地數據庫,並且是用當前系統身份登錄,即不需要密碼和用戶名

第三點:

從以上uid,pwd,Integrated Security看出,官方不推薦使用uid,pwd這種連接方式,

事實上官方給出一些做法,思想相當有趣如下:

一個是:避免連接字符串出錯,建議用系統代碼構建生成

private static void BuildConnectionString(string dataSource,
    string userName, string userPassword)
{
    // Retrieve the partial connection string named databaseConnection
    // from the application's app.config or web.config file.
    ConnectionStringSettings settings =
        ConfigurationManager.ConnectionStrings["partialConnectString"];

    if (null != settings)
    {
        // Retrieve the partial connection string.
        string connectString = settings.ConnectionString;
        Console.WriteLine("Original: {0}", connectString);

        // Create a new SqlConnectionStringBuilder based on the
        // partial connection string retrieved from the config file.
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(connectString);

        // Supply the additional values.
        builder.DataSource = dataSource;
        builder.UserID = userName;
        builder.Password = userPassword;
        Console.WriteLine("Modified: {0}", builder.ConnectionString);
    }
}

推薦做法:

// change connection string in the APP.CONFIG file  
<connectionStrings>  
  <add name="MyConnString"  
       connectionString="Initial Catalog=myDB;Server=myServer"  
       providerName="System.Data.SqlClient" />  
</connectionStrings>  
  
// then use the following snippet:  
using System.Configuration;  
  
System.Windows.Controls.TextBox txtUserId = new System.Windows.Controls.TextBox();  
System.Windows.Controls.PasswordBox txtPwd = new System.Windows.Controls.PasswordBox();  
  
Configuration config = Configuration.WebConfigurationManager.OpenWebConfiguration(Null);  
ConnectionStringSettings connString = config.ConnectionStrings.ConnectionString["MyConnString"];  
  
using (SqlConnection conn = new SqlConnection(connString.ConnectionString))  
{  
SecureString pwd = txtPwd.SecurePassword;  
pwd.MakeReadOnly();  
SqlCredential cred = new SqlCredential(txtUserId.Text, pwd);  
conn.Credential = cred;  
conn.Open();

但是關於他推薦的做法,鑑於目前工作中尚未遇到,待以後遇見再做總結,暫不做推薦(自己沒有使用,就不囉嗦勒)

結尾:

<connectionStrings>  
  <add name="Name"
   providerName="System.Data.ProviderName"
   connectionString="Valid Connection String;" />  
</connectionStrings>

https://docs.microsoft.com/zh-cn/dotnet/framework/data/adonet/connection-strings-and-configuration-files

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章