一直以来都是百度百度,从来没认真总结,但是写法却有很多种莫衷一是,到底该怎么写,官方怎么推荐的?
从官网找到一个权威的说法,如下连接字符串(公司在用)
<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>