測試ConnectionString是否能連接上數(shù)據(jù)庫服務(wù)器比如你要連接一個(gè)Sql Server服務(wù)器,你有一個(gè)connection string, 但是不知道是否是正確的,你可以這樣:
var connection = new SqlConnection(connectionString); connection.Open(); connection.Close();
如果整個(gè)過程中沒有異常拋出,則說明connectionString是指向一個(gè)Sql Server的服務(wù)器。但是,如果connectionString里邊的Data Source(或者Server)的值是錯(cuò)的,就要等很久——大約30秒——才能從connection.Open()這一句拋出異常。有沒有辦法讓這個(gè) 過程快一點(diǎn)呢?
你可以試著在connectionString里添加上: "Connection Timeout=3",這指示超時(shí)時(shí)間為3秒。但是實(shí)際上效果還是一樣的,異常仍然要在30秒之后才會拋出。
你也可以試著用另一個(gè)線程去連接服務(wù)器,主線程在若干秒后調(diào)用該線程的 Abort()方法,但是,實(shí)驗(yàn)效果是行不通,因?yàn)槟莻€(gè)線程在connection.Open()里根本出不來,無法被Abort掉。
最后,我的解決方法還是采用后臺線程,只不過如果到期尚未成功,那就當(dāng)做失敗,然后把它扔到一邊去,不再理它了:
//采用后臺線程來連接數(shù)據(jù)庫,以便在服務(wù)器輸入錯(cuò)誤的情況下,不用等待很長的時(shí)間才能得到一個(gè)錯(cuò)誤提示 |
|