【VB.Net機房重構】儲存過程的使用
重構機房的時候,聽到了很多新的名詞,其實也不是,在學習SQL的時候都接觸過,但那個時候緊緊是停留在了理論上,現在通過機房進行實踐。觸發器,檢視,儲存過程等等
儲存過程:將一系列相關聯的SQL語句集合到一起。在程式的程式碼中直接執行儲存過程的名字,不用每次都寫這麼多語句;
重構的充值表,需要同時對三張表新增資料,如果用程式碼編寫的話,實現是沒有問題的,但是如果同時操作的表更多了,怎麼辦。怎麼提高程式碼的效率,提高系統的效能?這個時候用上儲存過程,就初步解決了這個問題,提高了程式碼重用性。
優點:
1.安全性。 --保護表名和欄位名。2.提高SQL Server執行速度 --一次編譯,多次執行。
3.提高重用性 --相同的功能需求
4.減少伺服器負擔。 --降低伺服器的使用率,提高訪問速度。
5.將複雜操作,用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。
分類:
1.自定義的2.擴充套件的:程式設計語句建立的外部過程,載入動態連結庫。
3.系統的。用來進行系統的各項設定.取得資訊.相關管理工作。例如:sp_help,sp_rename等等。
是否有引數
1.帶引數
2.不帶引數
對儲存過程的各種操作:
1.建立(可以用程式碼或者企業管理器)
自定義儲存過程與系統儲存過程進行區分,不要使用sp_開頭。
[ @parameter data_type] [ output ] --引數和引數型別 --引數是輸出引數
[ with encryption ] --加密,將建立儲存過程本身的語句加密。保護儲存過程用到的表資訊。提高資料庫的安全性。
AS
Begin
<sql_statement>
End
EXEC 或者 EXECUTE pro_name
3.修改
將CREATE修改為ALTER --ALTER不能修改儲存過程的名字。
4.修改儲存過程(,表,檢視等)的名字。使用系統儲存過程
SP_RENAME 'pro_old','pro_new'
5.檢視儲存過程
用系統的儲存過程 sp_helptext pro_name;如果儲存過程加密的話,就不能看到了,加密提高了資料的安全性。
6.刪除儲存過程
刪除前,要確保沒有物件在使用儲存過程。
DROP PROC pro_name.
實踐:
機房充值表的儲存過程,帶有引數
CREATE PROCEDURE pro_Register
-- Add the parameters for the stored procedure here
@cardNo char(11),@cash numeric(10,3),@IsCheck char(10),@status char(10) , --定義所有的變數,型別要和資料庫表中的型別一致;
@cardDate char(10),@cardTime char(10),
@addMoney numeric(19,4),@rechargeDate date,@rechargeTime time,
@userID char(10),@studentNo char(11),@studentName char(10),@sex char(6),
@department char(10),@grade char(10),@studentClass char(10),@note varchar(50)
AS
BEGIN --Begin ...End 塊語句
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here --向表中插入內容;
insert into T_Student_Info (cardNo ,studentNO ,studentName ,sex ,department ,grade ,studentClass ,note ) values (@cardNo ,@studentNo ,@studentName ,@sex ,@department ,@grade ,@studentClass ,@note )
insert into T_card_Info (cardNo ,cash ,IsCheck ,status,cardDate ,cardTime,userID )values (@cardNo ,@cash ,@IsCheck ,@status ,@cardDate ,@cardTime ,@userID )
insert into T_ReCharge_Info (cardNo ,addMoney ,rechargeDate ,rechargeTime ,userID ,status ) values(@cardNo ,@addMoney ,@rechargeDate ,@rechargeTime ,@userID ,@status )
END
GO
在D層程式碼:
Public Function insertStudent(student As StudentEntity, card As CardEntity, recharge As RechargeEntity) As Integer Implements IDAL.IStudent.insertStudent
Dim helper As New SqlHelper.SqlHelper '例項化SQLHelper類
Dim params As SqlParameter() = {New SqlParameter("@StudentNo", student.StudentNo), '儲存過程中出現的引數
New SqlParameter("@cardNo", card.CardNo),
New SqlParameter("@studentName", student.StudentName),
New SqlParameter("@sex", student.Sex),
New SqlParameter("@department", student.Department),
New SqlParameter("@grade", student.Grade),
New SqlParameter("@StudentClass", student.StudentClass),
New SqlParameter("@note", student.Note),
New SqlParameter("@cash", card.Cash),
New SqlParameter("@Ischeck", card.IsCheck),
New SqlParameter("@status", card.Status),
New SqlParameter("@cardDate", card.CardDate),
New SqlParameter("@cardTime", card.CardTime),
New SqlParameter("@addMoney", recharge.AddMoney),
New SqlParameter("@rechargedate", recharge.RechargeDate),
New SqlParameter("@rechargeTime", recharge.RechargeTime),
New SqlParameter("@userID", Entity.UserEntity.UserHead)
}
Dim result As Integer '定義一個整形變數,存放返回值;
'執行helper物件的ExecuteNonQuery帶引數的方法,引數是儲存過程名,儲存過程型別,還有引數;
result = helper.ExecuteNonQuery("pro_register", CommandType.StoredProcedure, params)
Return result
End Function
儲存過程的使用,不單單減少了程式碼,而且提高了系統的效能和效率,機房重構,更多的還是在於接觸很多以前沒有接觸的東西,在實踐中發現它們的優點,善於使用,善於發現更加的解決方案。
相關文章
- 【VB.Net機房重構】--簡述配置檔案
- asp.net(VB.net)中儲存過程的使用方法 (轉)ASP.NET儲存過程
- 使用儲存過程儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- 儲存過程中使用cursor儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- 機房重構總結
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- 儲存過程儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- Laravel 中使用 MySQL 儲存過程LaravelMySql儲存過程
- mysql 遊標的使用(儲存過程)MySql儲存過程
- oracle 儲存過程遊標的使用Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- 修改的儲存過程儲存過程
- mysql的儲存過程MySql儲存過程
- MySQL的物理儲存結構和session過程MySqlSession
- SQL Server儲存過程中raiserror的使用SQLServer儲存過程AIError
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- 儲存過程呼叫其他模式的儲存過程需要注意的地方儲存過程模式
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- 儲存過程與儲存函式儲存過程儲存函式
- Oracle儲存過程Oracle儲存過程
- sybase儲存過程儲存過程
- java儲存過程Java儲存過程
- 管理儲存過程儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- 儲存過程中巢狀儲存過程的變數執行方式儲存過程巢狀變數
- 在Entity Framework中使用儲存過程Framework儲存過程
- MySQL5儲存過程使用(轉)MySql儲存過程
- 遞迴儲存過程中使用cursor遞迴儲存過程