一直以來都是百度百度,從來沒認真總結,但是寫法卻有很多種莫衷一是,到底該怎麼寫,官方怎麼推薦的?
從官網找到一個權威的說法,如下連接字符串(公司在用)
<add name="ConnectionSetting" connectionString="Server=xxx.yyy.zzz,56001;uid=xx;pwd=xxx;database=xxx;pooling=true;Max Pool Size = 2000;" providerName="SQLServer" />
那麼到底什麼含義呢?
見如下官方給出清清楚楚的解釋
劃出重點:
第一點:不區分大小寫!
第二點:各個關鍵字的解釋
關鍵字: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>