.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

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