標籤:edit 靜態 等等 done ogre 使用 重要 serve round
在之前的文章中介紹了使用ASP.NET MVC來開發一個部落格系統,並且已將初具雛形,可以查看文章列表頁面,也可以點擊文章列表的其中一篇文章查看詳情,這已經完成了最開始需求分析的讀者的查看列表和查看文章兩個需求,但是現在最大的問題是文章資料仍然是“靜態”的。
所有資料被儲存在記憶體中,系統在初始化時會自動添加被寫入程式碼在代碼檔案中的資料,伺服器每次重新啟動都只會保留這些資料,並且沒有提供“作者”的管理介面,“作者”沒法來管理這些資料,哪怕是可以進行管理也沒用,因為伺服器重啟後資料就不存在了,這才是最糟糕的。最初使用HTML檔案儲存的文章雖然不易修改,但至少資料以檔案的形式被儲存在硬碟上,只要硬碟不壞,那麼資料永遠不會丟失,但是現在不一樣了,要如何對資料進行持久化呢?
資料庫是最好的選擇(有的時候也會需要使用檔案來管理資料,需要根據實際的應用情境來選擇,如設定檔),當然也可以使用檔案的方式來管理資料,其實資料庫也是一種特殊的檔案,只不過資料庫檔案可以特有的訪問方式來對資料進行管理,如插入、刪除、更新和快速尋找等等,這些功能都不需要自己編寫,它們是資料庫管理系統提供的(DBMS,Database Management System),資料庫又存在很多種類型,在一般企業級應用中常用的是關係型資料庫,主要有SQL Server、MySQL、Oracle、PostgreSQL等,它們都能夠為應用程式的資料存放區提供可靠保證。
對於ASP.NET來說最常用且提供支援最多的當然是SQL Server,但是由於MySQL和PostgreSQL都是開源的,一定程度上可以對其免費使用,所以也經常被.NET開發人員使用,本系列文章將使用SQL Server和MySQL兩種資料庫來實現資料存放區功能,同時也可以看出不同資料庫對一個應用程式會有哪些影響。
使用SQL Server儲存資料
1. 使用SQL Server建立Blog資料庫,以及Posts表,表欄位對應Post類(如何使用SQL Server不在本系列文章範圍內,所以會忽略很多細節):
2. 在表中添加資料:
在ASP.NET中訪問SQL Server
文章前面說過資料庫其實也是一種特殊的檔案,然後通過特有的訪問方式來使用它,那麼ASP.NET 要如何串連並使用SQL Server呢?ADO.NET。(ADO.NET更多資訊參考:http://blog.csdn.net/dreamcatchergo/article/details/9729525)
現在修改原有通過靜態數組擷取資料的BlogRepository,使用ADO.NET來擷取資料庫中的資料,ADO.NET相關的類在System.Data.dll程式集中,而ADO.NET對於不同的資料來源提供了不同的資料提供器,它們用於串連不同的資料來源:
SQL Server:System.Data.SqlClient
OleDb: System.Data.OleDb
Odbc: System.Data.Odbc
Oracle: System.Data.OracleClient
在本例中使用的是SQL Server,所以需要System.Data以及System.Data.SqlClient的支援,System.Data在建立項目時以及預設存在。
1. 通過Nuget包管理器安裝System.Data.Sqlclient庫:
2. 修改BlogRepository,讓其從資料庫中擷取資料:
上面代碼中有三個重要的對象分別是SqlConnection、SqlCommand、SqlDataReader,它們的作用分別是通過連接字串串連資料庫、通過SQL語句及參數執行SQL(也可以執行預存程序)、讀取執行SQL返回的結果。
3. 程式執行結果:
小結:
本章介紹了如何使用資料庫來管理資料,然後通過ADO.NET來串連資料庫,從資料庫中擷取文章資料,然後顯示到頁面上,現在這個應用程式已經“動”起來了,僅需要更新資料庫的內容,頁面內容也將隨之而變。但存在一個問題就是每一次從資料庫擷取資料都要寫SQL語句然後從返回的資料集中擷取相應欄位的資料用來建立實體物件。有沒有更好的方法來解決?
參考:
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/
http://blog.csdn.net/dreamcatchergo/article/details/9729525
本文串連:http://www.cnblogs.com/selimsong/p/7651460.html
ASP.NET沒有魔法——目錄
ASP.NET沒有魔法——ASP.NET與資料庫