'傳遞引數sql傳遞查詢語句,msgstring傳遞查詢資訊。自身以乙個資料集物件的形式返回
public function executesql(byval sql as string, msgstring as string) as adodb.recordset
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 '執行查詢語句
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
msgbox msgstring
resume executesql_exit
上面是模組中executesql函式的定義過程,它的目的就是執行sql語句。那它是怎樣的邏輯呢?
首先它運用了乙個split函式,在msdn中查詢它的意思就是返回一組下標為0的陣列。
看乙個例子:
寫一句sql語句:"select * from student_info"
執行stokens=split(sql)
stokens(0)="select"
stokens(1)="*"
stokens(2)="from"
stokens(3)="student_info"
這樣就把乙個查詢語句拆分成了乙個陣列
然後看instr("insert,delete,update", ucase$(stokens(0)))這句話,instr函式在msdn中的解釋:
instr([start, ]string1, string2[, compare]),下標從1開始
返回指定一字串在另一字串中最先出現的位置。在字串string1中,從start開始找string2,省略start時 從string1頭開始找。找不到時,函式值為0。
因為sql語句中最常用的就是 select,insert,delete,update,所以這句話的意思就是在"insert,delete,update"中查詢sql語句開頭的單詞,如果能夠找到就執行下邊的語句,如果找不到就執行else中的語句。
大家肯定會疑惑為什麼紅色字部分沒有select,原因是現在這個語句的功能是單純地判斷是不是select語句,如果是就執行else。
最後看executesql_exit:
set rst = nothing '清空資料集物件
set cnn = nothing '中斷連線
exit function
這是典型的單個退出點。當執行正確的時候就直接退出了exit function,如果出錯了才執行錯誤處理語句。單個退出點的作用就是確保出錯時才執行錯誤處理語句。
說說遇到的問題:昨天上午和佳翰討論時,他的**部分"insert,delete,update"都用的小寫,但是後邊缺家了ucase,我們在除錯delete語句的時候怎麼也不執行else之前的語句,後來找了煥月師姐她說轉換成大寫肯定找不到從前邊找到delete,所以就不執行。
學生資訊管理系統 系統模組
系統模組主要分為三個小模組 1 新增使用者 2 修改密碼 3 推出登陸 其中知識點相對比較多的在新增使用者窗體中 1 新增使用者模組的主要功能就是為資料庫新增新的使用者 a 判斷文字框中是否為空 b 若不為空,判斷輸入的使用者名稱是否在資料庫中已經存在 起初對於這句話並不是很理解,在查詢之後發現其實...
學生資訊管理系統之
習學生資訊管理系統的時候,對於資訊的修改很多時候都用到了 書籤的功能 mybookmark 對刪除記錄顯示記錄起到了承上啟下的巨大作用。所以說書籤最懂你的心。書籤顧名思義就是做標記,讓我們更好的控制使用資料表,通過書籤我們可以隨意的跳到我們想要看的記錄下 前提是你的給你的目的記錄標記書籤 此外書籤還...
學生資訊管理系統
學生資訊管理系統,顧名思義就是為了管理學生的相關資訊做的一款軟體。雖然這次有原始碼供我們參考,但是從中我學習到了如何從開始到完工去做一款軟體,下邊我從做一項軟體專案的前後順序來總結我的學生資訊管理系統。一,分析需求 首先在做這款軟體是,我們先想象乙個成品,他的功能有哪些,每個功能完成哪項任務,這就是...