ASP.NET開發實戰——(七)ASP.NET與數據庫

  在之前的文章中介紹了使用ASP.NET MVC來開發一個博客系統,並且已將初具雛形,可以查看文章列表頁面,也可以點擊文章列表的其中一篇文章查看詳情,這已經完成了最開始需求分析的讀者的查看列表和查看文章兩個需求,但是現在最大的問題是文章數據仍然是“靜態”的。
  所有數據被保存在內存中,系統在初始化時會自動添加被硬編碼在代碼文件中的數據,服務器每次重新啓動都只會保留這些數據,並且沒有提供“作者”的管理接口,“作者”沒法來管理這些數據,哪怕是可以進行管理也沒用,因爲服務器重啓後數據就不存在了,這纔是最糟糕的。最初使用HTML文件保存的文章雖然不易修改,但至少數據以文件的形式被保存在硬盤上,只要硬盤不壞,那麼數據永遠不會丟失,但是現在不一樣了,要如何對數據進行持久化呢?
  數據庫是最好的選擇(有的時候也會需要使用文件來管理數據,需要根據實際的應用場景來選擇,如配置文件),當然也可以使用文件的方式來管理數據,其實數據庫也是一種特殊的文件,只不過數據庫文件可以特有的訪問方式來對數據進行管理,如插入、刪除、更新和快速查找等等,這些功能都不需要自己編寫,它們是數據庫管理系統提供的(DBMS,Database Management System),數據庫又存在很多種類型,在一般企業級應用中常用的是關係型數據庫,主要有SQL Server、MySQL、Oracle、PostgreSQL等,它們都能夠爲應用程序的數據存儲提供可靠保證。
  對於ASP.NET來說最常用且提供支持最多的當然是SQL Server,但是由於MySQL和PostgreSQL都是開源的,一定程度上可以對其免費使用,所以也經常被.NET開發人員使用,本系列文章將使用SQL Server和MySQL兩種數據庫來實現數據存儲功能,同時也可以看出不同數據庫對一個應用程序會有哪些影響。

  本文通過以下兩點來介紹如何在ASP.NET中使用SQL Server數據庫:

  ●使用SQL Server存儲數據
  ●在ASP.NET中訪問SQL Server

使用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

 

歡迎添加個人微信號:Like若所思。

歡迎關注我的公衆號,不僅爲你推薦最新的博文,還有更多驚喜和資源在等着你!一起學習共同進步!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章