機房收費系統重構之預存程序的使用,收費系統重構

來源:互聯網
上載者:User

機房收費系統重構之預存程序的使用,收費系統重構

    從一開始對於機房收費系統的無從下手,到現在已經接近尾聲,像冬天的迷霧一樣,隨著時間散開了去,對於其也是越來越清晰,想一想,這種學習的過程還真是美妙。

    當然只學習不去總結是沒有意義的。今天我就來把預存程序的使用總結一下。拿使用者註冊來說,就是往資料庫裡添加使用者,以方便更多的使用者使用。那麼使用者註冊我們要注意到什麼呢?

1.通過卡號判斷使用者是否已經存在。

如果不存在該使用者:

2.將資訊寫入學生表。

3.更新充值記錄表

4、更新卡表中的餘額。

    我們分析可以得到,如果不存在該使用者,我們需要同時改動三個表。當然,你可以去一條一條的去寫,但是這種做法不是我們想要的,今天是三個表,下次是三十個表,你還一條一條的寫?所以在這裡我們就引入了預存程序。

一、什麼是預存程序呢?

    定義:將常用的或很複雜的工作,預先用SQL語句寫好並用一個指定的名稱儲存起來, 那麼以後要叫資料庫提供與已定義好的預存程序的功能相同的服務時,只需調用execute,即可自動完成命令。

    講到這裡,可能有人要問:這麼說預存程序就是一堆SQL語句而已啊?Microsoft公司為什麼還要添加這個技術呢?

    那麼預存程序與一般的SQL語句有什麼區別呢?

二、預存程序的優點:

    1.預存程序只在創造時進行編譯,以後每次執行預存程序都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用預存程序可提高資料庫執行速度。

    2.當對資料庫進行複雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此複雜操作用預存程序封裝起來與資料庫提供的交易處理結合一起使用。

    3.預存程序可以重複使用,可減少資料庫開發人員的工作量

    4.安全性高,可設定只有某此使用者才具有對指定預存程序的使用權

三、預存程序的種類:

    1.系統預存程序:以sp_開頭,用來進行系統的各項設定.取得資訊.相關管理工作,如 sp_help就是取得指定對象的相關資訊

    2.擴充預存程序   以XP_開頭,用來叫用作業系統提供的功能

    3.使用者自訂的預存程序,這是我們所指的預存程序

   常用格式

   create proceduresp_name

   @[參數名] [類型],@[參數名] [類型]

   as

   begin

   .........

   end

四、調用預存程序

    1.基本文法:exec sp_name [參數名]

五、刪除預存程序

    1.基本文法:

drop procedure sp_name

2.注意事項

   (1)不能在一個預存程序中刪除另一個預存程序,只能調用另一個預存程序。

   就好比機房收費系統中註冊中用到的:

CREATE PROCEDURE [dbo].[PROC_Register]  @cardNo char(10),@studentNo char(10),@name ntext,@sex nchar(10),@department char(10),@grade nchar(10),@classgrade nchar(10),@cash decimal(18,2),@cardStatue char(16),@cardType char(8),@chargeMoney decimal(10,4),@chargeDateTime datetime,@userName char(10),@statue ntext,@registerDateTime date,@checkStatue char(10)ASBEGIN--添加卡表insert into T_CardInfo (cardNo ,studentNo ,cardStatue ,cash,cardType ,registerDateTime ,userName ,checkStatue  ) values (@cardNo ,@studentNo ,@cardStatue ,@cash,@cardType ,@registerDateTime ,@userName ,@checkStatue  )--添加到學生表insert into T_StudentInfo (studentNo ,name ,sex ,department ,classgrade ,statue ,grade ) values (@studentNo ,@name ,@sex,@department,@classgrade ,@statue,@grade)--添加到儲值記錄表insert into T_Recharge (cardNo ,chargeDateTime ,chargeMoney ,userName ) values (@cardNo ,@chargeDateTime,@chargeMoney,@userName)END
           這樣就可以輕鬆的操作在三個表中,當然預存程序遠遠不止這些,並且在以後學習中,我們還會繼續研究。

    像我們需要修改三張表一樣,當一件同樣的事情,需要我們來做三次,我們就要敢於去想一個比較高效的辦法,像我之前就沒有去想的這樣一件事情,所以,我們還要去敢想,因為不知道有多少人在我們敢想之前做了出來。


教,怎破解我們學校的機房收費系統?

zhidao.baidu.com/question/21454140.html
 
sqlCommand幾種方法的總結

此類不能被繼承。我覺得這個類就是起到一個橋樑的作用。他串連.NETt和SQL Server;將我們在用戶端設定的sql語句傳遞給sql;再將sql的值傳遞給用戶端
這個類中定義了很多的方法和屬性來協助我們完成不同的sql語句;總結三種在機房收費系統中用到的方法
第一種方法:ExecuteScalar
作用: 執行查詢傳回值: 返回查詢所返回的結果集中第一行的第一列。 忽略其他列或行。System.Object 結果集中第一行的第一列;如果結果集為空白,則為空白引用(在 Visual Basic 中為Nothing)適用情況: 使用ExecuteScalar 方法從資料庫中檢索單個值(例如一個彙總值)。與使用 ExecuteReader 方法,然後使用 SqlDataReader 返回的資料執行產生單個值所需的操作相比,此操作需要的代碼較少。 範例程式碼:
在VB.NET中從資料庫中取出單個值----使用從recharge求和的語句和
Imports System.Data ' 建立表類型的變數需要引用的空間 Imports System.Data.SqlClient '建立sql資料庫連接需要引用的空間 Imports Entity Imports DateBaseHelper Public Class ConsumeInfoDAL '得到T_Recharge中全部的儲值金額 Public Function GetBlance(ByVal strID As String, ByVal consumeCash As String) As String '設定傳入sql中的T_SQL語句:獲得儲值的全部金額 Dim strRecharge As String = "SELECT SUM(cast(RechargeCash as int )) FROM T_RechargeInfo where CardID ='" + strID + "' " '開啟資料庫 執行上面的sql語句得到結果 關閉資料庫 Dim con As New DBHelper Dim recharge As String con.Open() '需要處理如果表中沒有記錄那麼返回的是false '如果返回false 儲值為0 If con.ExecutesqlScalar(strRecharge) = False Then recharge = " 0" Else recharge = con.ExecutesqlScalar(strRecharge) End If con.Close() '返回結果 Return recharge End Function End Class DBHelper類,將對資料庫的常用操作定義成了方法Imports System.Data Imports System.Data.SqlClient Imports System.Data.OleDb Imports System.Text Imports System.Configuration Imports Entity Public Class DBHelper Private myConnection As New SqlConnection '表示資料連線控制項 Private CmdString As String '表示SQL語句命令 Priva......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.