如何通過程式碼連線SQL Server資料庫
我們曾經為南方電網做過幾個有關架空線路的科技專案,要趁著假期有整段的空閒時間,把這些程式碼整理一下,放入團隊剛剛重構的程式碼庫中。
由於這些專案使用的資料庫為 SQL Server,所以在整理程式碼之前需要解決兩個問題:
- 把以前備份的資料庫檔案還原。
- 建立連線 SQL Server 資料庫的配置檔案。
我在這裡做個記錄,等開學之後新進入LSGO軟體技術團隊的小夥在 Code Review 團隊程式碼時有個參考。最起碼根據步驟能夠把環境配置好,讓程式碼 Run 起來。
先解決第一個問題,備份資料的還原。
Step1:進入 SQL Server 建立一個空白資料庫,我們這裡建立的資料庫名稱為 HeYuan。
Step2:還原資料庫檔案,這裡需要注意還原選項的配置。
此處選擇 源裝置
然後在相應的目錄中新增需要還原的資料庫檔案。
特別注意,在 選項
部分勾選 覆蓋現有資料庫(WITH REPLACE)(O)
否則還原失敗。
Step3:檢視還原之後的資料,確認是否完整。
如果當初備份的檔案沒有問題,到這裡,還原資料庫檔案就搞定了。
接著,我們解決第二個問題,通過程式碼連線資料庫,由於 SQL Server 資料庫對 sa 使用者是遮蔽的,所以我們需要先對登陸的 sa 使用者屬性進行設定。另外 SQL Server 預設的身份驗證是 Windows 模式,我們也需要將其修改為 SQL Server 和 Windows 模式。
Step1:設定 sa
使用者屬性。
在 狀態
中將登陸設為開啟。
在 常規
中設定 sa
使用者的密碼,在寫程式碼連線資料庫時需要用到。
Step2:設定資料庫的連線屬性。
Step3:重啟資料庫服務
通過以上三個步驟,我們就可以通過程式碼的方式來連線 SQL Server 資料庫了,否則連線失敗。程式碼如下:
public interface ILSGOConnectionProperty { string Server { get; set; } string Database { get; set; } string User { get; set; } string Password { get; set; } } public override bool CreateMisDbConnection(ILSGOConnectionProperty connectionProperty,ref string error) { string server = connectionProperty.Server; string userId = connectionProperty.User; string password = connectionProperty.Password; string datatbase = connectionProperty.Database; string connectionString = "Initial Catalog=" + datatbase + ";Data Source=" + server + ";User Id=" + userId + ";Password=" + password + ";"; SqlConnection pConnection = new SqlConnection(connectionString); try { pConnection.Open(); return true; } catch(Exception ex) { error = ex.Message; return false; } }
我們可以通過 WinForm,採用與使用者互動的方式來構造與資料庫連線的配置檔案。
得到 XML 的配置檔案如下:
<OLPlantSafeDistanceSystemVersion1.0>
<DataSource>
<Server>10.14.12.254</Server>
<User>sa</User>
<Password>5d4154</Password>
<Database>HeYuan</Database>
<DBType>SqlServer</DBType>
</DataSource>
</OLPlantSafeDistanceSystemVersion1.0>
這樣,在編寫程式碼時,通過讀取配置檔案來確定與資料庫的連線資訊,當資料庫發生變動時,只需要更改配置檔案就好,滿足軟體開發的 開閉原則。
最後總結一下,以往新加入的小夥伴,遇到問題之後,我們都會詳細的給予解答。慢慢的,我們發現很多問題都是相同的。乾脆,我就把他們常問的問題,整理出來寫在這個微訊號中,遇到問題,就把對應的圖文轉過去,或許能夠提升不少大家的做事效率!
就寫到這裡吧!See You!