【學生資訊管理系統】模組程式碼的理解
學生資訊管理系統中,最難理解的程式碼就是模組中的,理解了模組中的一些程式碼,學生資訊管理系統基本上就掌握了,剩下的窗體中的程式碼都是重複的。模組中的程式碼又以ExecuteSQL函式最費解。
<span style="font-size:14px;">Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset '引數SQL傳遞查詢語句,MsgString傳遞查詢資訊
Dim cnn As ADODB.Connection '定義連線
Dim rst As ADODB.Recordset '定義記錄集
Dim sTokens() As String '定義字串
On Error GoTo ExecuteSQL_Error '異常處理
sTokens = Split(SQL) '用Split函式產生一個包含各個子串的陣列
Set cnn = New ADODB.Connection '建立連線
cnn.Open ConnectString '開啟連線
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '判斷字串中是否含有指定內容。
cnn.Execute SQL '執行SQL語句
MsgString = sTokens(0) & "query successful" '返回查詢資訊
Else
Set rst = New ADODB.Recordset '建立資料集物件
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查詢到" & rst.RecordCount & "條記錄"
End If
ExecuteSQL_Exit:
Set rst = Nothing '清空資料集物件
Set cnn = Nothing '中斷連線
Exit Function
ExecuteSQL_Error: '錯誤型別判斷。
MsgString = "查詢錯誤:" & Err.Description
Resume ExecuteSQL_Exit
End Function</span><span style="color: red; font-family: Calibri;font-size:18px;"> </span>
sTokens = Split(SQL)
Split函式:返回一個下標從零開始的一維陣列,它包含指定數目的子字串。
寫一句SQL語句:"select *from student_Info"
執行sTokens=Split(SQL)
sTokens(0)="select"
sTokens(1)="*"
sTokens(2)="from"
sTokens(3)="student_Info"
這樣就把一個查詢語句拆分成了一個陣列
<span style="color: rgb(255, 0, 0); font-family: 宋體; font-size: 18px;">If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then</span>
Instr函式:返回 Variant (Long)
InStr([start, ]string1, string2[, compare]),下標從1開始,返回指定一字串在另一字串中最先出現的位置。在字串string1中,從start開始找string2,省略start時,從string1頭開始找。找不到時,函式值為0。
Ucase$函式:返回 Variant(String),其中包含轉成大寫的字串。只有小寫的字母會轉成大寫;原本大寫或非字母之字元保持不變。
Execute 方法:執行動作查詢或執行 SQL 語句,它們都不返回行。
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
語法格式:
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
引數說明:
- Source可選。Variant,計算有效的 Command 物件、SQL 語句、表名、儲存過程呼叫、URL 或包含持久儲存的 Recordset 的檔案或 Stream物件的名稱。
- ActiveConnection可選。Variant 或 String,Variant 用於計算有效的 Connection 物件變數的名稱;String 包含ConnectionString 引數。
- CursorType可選。CursorTypeEnum 值,確定當開啟 Recordset 時提供者應使用的遊標型別。預設值為 adOpenForwardOnly。
- LockType可選。LockTypeEnum 值,確定開啟 Recordset 時提供者應使用的鎖定型別(併發)。預設值為 adLockReadOnly。
- Options可選。Long 值,指示如果 Source 參數列示的不是 Command 物件,提供者應如何計算該引數;或者指示應從先前儲存 Recordset的檔案中恢復 Recordset。可以是一個或者多個 CommandTypeEnum 或 ExecuteOptionEnum 值。
其中:
1、CursorType引數的取值:
- adOpenDynamic-使用動態遊標。其他使用者所作的新增、更改或刪除均可見,而且允許Recordset 中的所有移動型別(如果提供者不支援書籤,則書籤除外)。
- adOpenForwardOnly-預設值。使用僅向前遊標。除了在記錄中只能向前滾動外,與靜態遊標相同。當只需要在Recordset 中進行一個傳遞時,用它可提高效能。
- adOpenKeyset-使用鍵集遊標。儘管從您的Recordset 不能訪問其他使用者刪除的記錄,但除無法檢視其他使用者新增的記錄外,它和動態遊標相似。其他使用者所作的資料更改依然可見。
- adOpenStatic-使用靜態遊標。一組記錄的靜態副本,可用於查詢資料或生成報告。其他使用者所作的新增、更改或刪除不可見。
- adOpenUnspecified-不指定遊標型別。
2、LockType引數的取值:
- adLockBatchOptimistic-指示開放式批更新。需要批更新模式。
- adLockOptimistic-指示逐個記錄開放式鎖定。提供者使用開放式鎖定,僅在呼叫Update 方法時鎖定記錄。
- adLockPessimistic-指示逐個記錄保守式鎖定。提供者要確保記錄編輯成功,通常在編輯之後立即在資料來源鎖定記錄。
- adLockReadOnly-指示只讀記錄。無法改變資料。
- adLockUnspecified-未指定鎖定型別。建立副本時,副本與源物件使用相同的鎖定型別。
相關文章
- 學生管理系統程式碼
- 學生選題資訊管理系統
- 學生資訊管理系統之深度理解
- 學生管理系統
- C語言學生管理系統原始碼C語言原始碼
- java swing實現的學生教師選課管理系統程式碼Java
- 醫學實驗室資訊管理系統原始碼原始碼
- 學生管理系統(springMVC)SpringMVC
- JAVA學生宿舍管理系統Java
- 【C++】學生管理系統C++
- 學生學籍管理系統~~功能介面
- java+SQL做學生資訊管理系統(增刪改查)學生新作JavaSQL
- 學生資訊管理系統(二)刪除資訊
- (十)ArrayList&&學生管理系統
- 【學生資訊管理系統】系統的介面與後臺
- 學生資訊管理系統用例
- 我的學生資訊管理系統總結
- 某學校的學生資訊管理系統網站網站
- Django練習-學生管理系統案例Django
- 9、ArrayList集合完成學生管理系統
- Python簡易學生管理系統Python
- 學生管理系統 四色原型原型
- Java 學生管理系統(MVC)開源原始碼(基礎版)JavaMVC原始碼
- Java簡單學生資訊管理系統Java
- 基於php學生資訊管理系統PHP
- 學生資訊管理系統之優化優化
- 【學生資訊管理系統】EOF 和 BOF
- 基於檔案的學生資訊管理系統
- python基礎(16):學生資訊管理系統——Python編寫(附全部程式碼)Python
- PHP手術麻醉資訊系統原始碼,手術前管理模組功能介紹PHP原始碼
- 學生管理系統java簡單實現Java
- SchoolTool:先進的學院管理和資訊系統
- 探討基於資訊系統的專案型生產管理
- 學生資訊管理系統課程設計
- 學生資訊管理系統之SQL連結SQL
- struts2學生資訊管理系統篇章①
- LinkedIn的生態系統–資訊圖
- 集團資訊生態系統