connectionstringsql
1. 將excel導入到sql server時出現ConnectionString 屬性未初始化
數據源選擇 Excel
目標選擇 Microsoft OLE DB Provider for MS SQL.
2. C# SqlConnection 在ConnectionString設置連接超時無效.
SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 15;
你用這種方法試一試
3. 如何正確使用SqlConnection
以前曾見過有人這樣寫代碼:
public class Service1 : IService1
{
private SqlConnection conn = new SqlConnection();
public void Method1()
{
//do something with conn;
}
public void Method2()
{
//do something with conn;
}
public void Method3()
{
//do something with conn;
}
public void Method4()
{
//do something with conn;
}
}
在服務類中,新建一個全局的conn對象,然後使用conn對象來操作資料庫。
當然,還有一些不同的版本,比如:
private SqlConnection conn = new SqlConnection();
private static SqlConnection sconn = new SqlConnection();
private SqlConnection Conn
{
get { return new SqlConnection(); }
}
如果有人問你哪種方式比較好,你會怎麼回答?
首先驗證下在多線程環境下使用一個Connection的方式:
創建控制台程序:
Main代碼如下:
public static void Main()
{
string connectionString = @"Data Source=.\SQLEXPRESS;
AttachDbFilename=""E:\DB\NORTHWND.mdf"";
Integrated Security=True;
Connect Timeout=30;User Instance=True";
string connectionStringNoPooling = connectionString + " ;Pooling='false' ";
SqlConnection conn = new SqlConnection(connectionString);
new Thread(() => { ExecuteCommand(conn); }) { Name = "t1" }.Start();
new Thread(() => { ExecuteCommand(conn); }) { Name = "t2" }.Start();
}
public static void ExecuteCommand(SqlConnection conn)
{
Console.WriteLine("Thread:{0},{1}", Thread.CurrentThread.Name, DateTime.Now);
conn.Open();
SqlCommand command = new SqlCommand("select * from customers", conn);
command.ExecuteNonQuery();
command.Dispose();
Thread.Sleep(5000); //模擬耗時的查詢
conn.Close();
Console.WriteLine("Thread:{0} 執行完畢,{1}", Thread.CurrentThread.Name, DateTime.Now);
}
代碼很簡單,模擬兩個線程同時執行ExecuteCommand.方法。結果如下:
可以知道在多線程環境下使用一個Connection來執行Sql語句是不安全的,
修改Main函數如下:將一個Connection,改為多個Connection
public static void Main()
{
string connectionString = @"Data Source=.\SQLEXPRESS;
AttachDbFilename=""E:\DB\NORTHWND.mdf"";
Integrated Security=True;
Connect Timeout=30;User Instance=True";
string connectionStringNoPooling = connectionString + " ;Pooling='false' ";
//SqlConnection conn = new SqlConnection(connectionString);
//new Thread(() => { ExecuteCommand(conn); }) { Name = "t1" }.Start();
//new Thread(() => { ExecuteCommand(conn); }) { Name = "t2" }.Start();
SqlConnection conn1 = new SqlConnection(connectionString);
SqlConnection conn2 = new SqlConnection(connectionString);
new Thread(() => { ExecuteCommand(conn1); }) { Name = "t1" }.Start();
new Thread(() => { ExecuteCommand(conn2); }) { Name = "t2" }.Start();
Console.ReadLine();
}
運行結果如下:
既然多個Connection比一個Connection要好,
為什麼還是有人使用上面的那種寫法來創建Connection呢?
我認為他們可能會認為創建多個Connection比較耗時,而且多個Connection會佔用內存,影響性能等等。。
在這一點上可以使用測試數據來說明:
測試數據來自:Connection-Pooling vs. Reusing one connection
Run #
NCP
CP
OC
1
4073
374
237
2
4032
341
298
3
3985
353
242
4
4085
348
269
5
3964
369
256
6
4203
330
207
7
4055
341
359
8
4071
357
286
9
3968
363
356
10
4023
349
359
AVG
4046
353
287
Run #:1代表1000次查詢,2代表2000次查詢
NCP :Not Connection Pool ,未啟用資料庫連接池
CP :Connection Pool,啟用資料庫連接池
OC :One Connection,一個連接對象
從圖表可以發現啟用了連接池的方式並不比重用一個連接慢多少。
但是從穩定性,程序的健壯性來說,CP的方式明顯的好於OC。
所以下次實現服務,或者是查詢的時候完全可以使用
public SqlConnection Connection
{
get
{
return new SqlConnection(@"...");
}
}
而不要
private SqlConnection conn = new SqlConnection(connectionString);
4. sqlConnection控制項ConnectionString新建連接出錯
你之前配置的資料庫連接是正確的嗎?重點檢查一下你的資料庫服務是否正常,還有你的連接字元串,用戶名和密碼是否正確
5. 連接mssql的connectionString怎麼寫
server=你的伺服器IP;DataBase=資料庫名;uid=用戶名;pwd=資料庫密碼;Max Pool Size = 1024
6. SQL2014 connectionstring屬性尚未初始化怎麼解決
SQL2014 connectionstring屬性尚未初始化是設置錯誤造成的,解決方法為:
1、老版本(SQL200)中,登錄後,在Master資料庫下面,找到「存儲過程」。
7. ASP.NET中的一段程序連接Sql ConnectionString 的問題
web.config中的資料庫連接字元串:
<connectionStrings>
<add name="eStoreConnectionString" connectionString="Data Source=數據源;Initial Catalog=資料庫;Persist Security Info=True;User ID=sa;Password=sa" providerName="System.Data.SqlClient"/>
</connectionStrings>
8. C#中 SqlConnection ConnectionString 中密碼既有 單引號 又有雙引號 並且有分號 連接字元串怎麼寫呢
var conn=@"pwd='{0}'";
conn=string.format(conn,pwd.replace("'","''");
密碼包括在單引號中,再將密碼中的單引號替換成兩個單引號。
9. asp與SQL連接。(看不懂網上的ConnectionString.圖上的寫法提示無法連接,不知道
.Net連接字元串(ConnectionString)
在連接到資料庫或者資料庫文件的時候,程序需要調用AOD或者ADO.NET中的封裝的數據提供程序,而連接字元串中包含了這些數據提供程序所需要的各種必要的信息。連接字元中包含的典型信息包括資料庫的名稱,伺服器的位置和用戶身份;他還可以指定其他更多的可操作信息,諸如連接超時和連接池設置。連接字元串使用一系列的鍵值對來存儲信息,每個鍵值對用分號隔開。
連接字元串的關鍵字
ApplicationName:客戶端應用程序的名稱。
Aync:啟動非同步操作支持。
AttachDBFileName或Initial FileName:一個可連接的資料庫文件使用的完整路徑名。
Connection Timeout:等待連接發生的秒數。
Current Language:SQL Server語言的名稱。
Database 或 Initial Catalog:要連接的資料庫的名稱。
Encrypt:指明是否應當對客戶和伺服器之間發送所有數據使用安全套接字層(SSL)加密。需要在伺服器上安裝一個證書。默認為False。
Failover Partner:出錯時要訪問的夥伴伺服器名稱。
Integrated Security 或 Trusted_Connection:指明當前的Windows賬戶憑據是否用於身份驗證。
MultipleActiveResultSets:表示一個應用程序是否可以維護多個活動結果集。
Network Library 或 Net:指明用來建立於SQL Server 的鏈接的網路庫。默認為dbmssocn,他是基於TCP/IP的。
Packet Size:指明數據包交換的位元組數。默認為8192.
PassWord 或 pwd:正在登陸的賬戶的密碼。
Persist Security Info:指明託管提供程序是否在作為連接字元串返回的字元串中包括密碼信息。默認為False。
Server 或 DataSource:要連接的SQL Server 實例的名稱或網址。
User ID 或 uid:正在登陸的賬戶的用戶名。
Workstation ID:連接到SQL Server 的機器的名稱。
連接字元串的一些規定
1.不帶引號和沒有意義的空格都將被忽略
2.空格將會影響連接池機制,池中的字元串應該有相同的格式
3.如果分號(;)是鍵值對值的一部分應該用引號引用
4.如果值是以單引號開始的,則使用雙引號,反之,如果值是以雙引號開始,則使用單引號
5.換碼序列(escape sequences)是不被支持的
6.值的類型無關緊要
7.字元串中的名稱是不區分大小寫的
8.如果一個鍵值對出現多次,則字元串採用最後出現的鍵值對的值
9.如果鍵中包含一個等號(=),那麼他必須在前面等號前面加由一個額外的等號來表明他是鍵中的一部分。
10.字元串中出現需要使用轉義字元來修飾
創建連接字元串
你可以直接手動寫一個固定連接字元串,但是如果讓客戶自己來寫合適的連接字元串那最好用ADO.NET2.0中的SqlConnectionStringBulider類來寫。使用字元串的builder,極大的增強了安全性,減少了用戶插入的不期望的數據的機會,通過Bulider向外界提供字元串中的關鍵字。
示例:
PublicSubCreateSqlConnection()
()
myConnection.ConnectionString="PersistSecurityInfo=False;IntegratedSecurity=SSPI;database=northwind;server=mySQLServer;ConnectTimeout=30"
myConnection.Open()
EndSub
10. vb2012連接sql2012的中的connectionstring怎麼設置啊
在vb2012中打開伺服器總管框,點選資料連接,連接到sql2012,在對剛創建好的連接上點選滑鼠右鍵選擇屬性,在屬性框中就可以看到ConnectionString了,接下來復制貼上。