VB.NET版機房收費系統之檢視
阿新 • • 發佈:2019-02-02
這次.NET版機房收費系統資料庫設計遵循了三正規化,變動最大的就是實現了學生和卡的分離,這樣避免了非關鍵字對關鍵字的傳遞依賴,卡表中的卡號在學生表中作為一個外來鍵,同樣將卡和學生聯絡起來,不過這樣分離以後問題也來了,比如想實現查詢學生餘額,有學生的資訊,也有卡的資訊,這樣查詢反而增添了麻煩,方法是伴隨問題而來的,之前學資料庫視訊有聽說過檢視、儲存過程、觸發器,不過沒有使用過,還是那句話,出來混遲早都要還的。
檢視很好的解決了多張表的查詢問題,前提肯定是這些表之間都有聯絡,我理解的是通過一個公共欄位將你需要的欄位臨時組成的一張虛擬表,它跟表的功能一樣的,只不過是臨時建立的。使用之後,會發現原來世界就是這麼簡單的。首先,選擇使用資料庫—檢視—新建檢視—選擇涉及表,
然後新增需要欄位,儲存檢視。
在程式碼實現中,要將試圖當作一張表來處理,建立一個獨立的實體,其他層程式碼和查詢一張表是完全相同的,不過在D層SQL語句中為查詢檢視,真是so easy,
Imports System.Data.SqlClient Imports ChargeEntity '/********************* '類名稱:SsInquireCashDAL '功能: '名稱空間:Charge.DAL '作者:李立平 '小組: '時間:2014/8/27 18:01:07 '版本號:v2.0.0 '**********************/ Public Class V_SsInquireCashDAL : Implements ChargeIDAL.IStuCardView ''' <summary> ''' 學生檢視餘額 ''' </summary> ''' <param name="CardNo"></param> ''' <returns>檢視學生卡實體</returns> ''' <remarks></remarks> Public Function SsInquireCash(ByVal CardNo As String) As List(Of ChargeEntity.StuCardViewEntity) Implements ChargeIDAL.IStuCardView.SsInquireCash Dim cmdText As String = "select * from V_SsInquireCash where cardNo = @cardNo" '和sql語句一樣,只是現在是查詢檢視而不是表 Dim cmdType As CommandType = CommandType.Text '命令型別 Dim SqlHelper As New SqlHelper '例項化SqlHelper Dim Parameter As SqlParameter() Dim dt As DataTable Dim mylist As List(Of ChargeEntity.StuCardViewEntity) Parameter = {New SqlParameter("@cardNo", CardNo)} '傳參 dt = SqlHelper.GetDataTable(cmdText, cmdType, Parameter) '呼叫SqlHelper類GetDataTable方法,並返回dt mylist = EntityHelper.convertToList(Of ChargeEntity.StuCardViewEntity)(dt) '將dt轉換為泛型集合 Return mylist End Function End Class
下面是效果:紅色為學生資訊,黑色為卡資訊。
當我們遇到問題時要想著如何讓問題變得簡單,這是一種態度,也是一種思維方式。