1. 程式人生 > >【機房收費系統】——模組中程式碼的含義

【機房收費系統】——模組中程式碼的含義

本部落格來自轉載,對模組不太懂的可以好好看看。

前言

這篇部落格認認真真的總結了一天,不能夠理解機房還有學生中模組的程式碼的意思,決定去解決一下這部分內容,下面就是我對此部分的程式碼的理解!感覺這部分的程式碼不過如此,下來跟著我一起搞懂它吧!

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset

   '傳遞引數sql傳遞查詢語句,msgstring 傳遞查詢資訊,自身以一個數據集物件的形式返回

      Dim cnn As ADODB.Connection    '重新宣告一個數據源連線物件,定義一個ADODB的連線
Dim rst As ADODB.Recordset '定義一個數據集 Dim sTokens() As String '定義字串(陣列) On Error GoTo ExecuteSQL_Error '異常處理, sTokens = Split(SQL) '用split函式產生一個包含各個子串的陣列,如果sql=”1 2 3 68” 則所得結果為: 'sTokens(0)=1,sTokens(1)=2,sTokens(2)=3,sTokens(3)=68。後面對這個函式有詳細的解釋! Set
cnn = New ADODB.Connection '例項化一個數據庫連線物件,宣告的是一個數據集所以用的是set new! cnn.Open connectstring '開啟連線,後面定義了connectstring If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then cnn.Execute SQL '判斷字串中是否含有指定內容,然後執行查詢資訊'如果有增,刪,改就直接進行資料庫查詢語句,(這裡 需要 '強調一點cnn.Execute SQL 並沒有開啟資料集)vb裡execute是個方法,執行遠端請求或者sql查詢的。
MsgString = sTokens(0) & "query successful" '查詢成功 Else Set rst = New ADODB.Recordset '相當於定義了一個新的資料集,資料集必須用set new! rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic'在程式碼後面會有詳細的解釋! 'open是recordset(記錄集的方法),記錄集是一個物件:有它自身的方法,常見的有 'addnew,update,delete,open,close,find,move等並沒有select這樣的方法,所以不能直接查詢;要 '查詢就必須用open方法,和sql查詢語句。剛開始學的時候有一個誤區:認為任何操作都要先開啟記錄集。 Set ExecuteSQL = rst '把rst給了函式executesql 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 Public Function connectstring() As String ' 宣告函式 connectstring = "filedsn=charge.dsn;UID=sa;PWD=123456"'返回一個數據庫連線 End Function

一、split函式

**
它是指返回一個下標從零開始的一維陣列,split函式包含指定數目的子字串。實際上起到的作用就是分割字串!

1、語法:

   Split(expression[, delimiter[, count[, compare]]])

2、下面簡單的舉個例子:

> sTokens=split(sql)
> 
> 如果sql=”1 2 3 68”  
> 
> 則所得結果為:sTokens(0)=1,sTokens(1)=2,sTokens(2)=3,sTokens(3)=68

注意我的數字之間都是有空格的,就是這個空格的作用,它可以方便的區別出一個字串,因此給的值是1、2、3、68!

二、open函式

VB 中,Open 語句提供對檔案的讀取、寫入、限定於其它程序開啟的檔案的操作。

1.語法:

Recordset.open Source,ActiveConnection,CursorType,LockType,Options

2. 作用:

開啟資料集物件

3. 引數說明

(1) Source: ,資料庫查詢資訊,可以是一個SQL查詢、資料表或儲存過程

(2) ActiveConnection:資料庫連線資訊,可以是一個已開啟的連線,或連線字串

(3) CursorType:遊標型別:

>  (adOpenForwardOnly): 只能在Recordset的記錄中向前移動,但速度最快。
> 
>     (adOpenKeyset):可以在Recordset中任意移動,其他使用者所做的記錄修改可見,但其他使用者新增的
> 
>                    記錄不可見,刪除的記錄欄位值不能被使用。  
> 
>     (adOpenDynamic):可以在Recordset中任意移動,其他使用者增、刪、改的記錄都可見,但速度最慢。
> 
>     (adOpenStatic):可以在Recordset中任意移動,其他使用者增、刪、改的記錄都不可見。 1

(4) LockType:併發控制

> (adLockReadOnly):recordset的記錄為只讀
> 
> (adLockPessimistic):只要保持Recordset為開啟,別人就無法編輯該記錄集中的記錄.
> 
> (adLockOptimistic):當updaterecordset中的記錄時,將記錄加鎖
> 
> (adLockBatchOptimistic):以批模式時更新記錄時加鎖

(5)Options:指定source傳遞命令的型別

> (adCmdText):SQL語句
> 
> (adCmdTable):資料表的名字
> 
> (adCmdStoredProc):儲存過程
> 
> (adCmdUnknown):未知型別

三: UCase()函式

將小寫字母轉換成大寫是將字串中所有的字元都轉換成大寫

四:Instr()函式

1.語法

instr( string1, string2, start_position,nth_appearance )

2.作用:

返回要擷取的字串在源字串中的位置

2.引數說明

(1)string1

源字串,要在此字串中查詢。

(2)string2

要在string1中查詢的字串

(3)start_position

代表string1 的哪個位置開始查詢。此引數可選,如果省略預設為1. 字串索引從1開始。如果此引數為正,從左到右開始檢索,如果此引數為負,從右到左檢索,返回要查詢的字串在源字串中的開始索引。

(4)nth_appearance

代表要查詢第幾次出現的string2. 此引數可選,如果省略,預設為 1.如果為負數系統會報錯。

五、 SET new到底是怎麼回事

物件分為值型別和引用型別,所有的結構體都是值型別,所有的類物件都是引用型別值型別在建立時不需要使用new來例項化,但引用型別需要使用new例項化

值型別包括大部分的數值物件,比如byte\int\long\datetime等這些型別,這些是不需要用new來宣告的,比如dim a as int

引用型別包括其他大部分的型別物件,比如陣列、窗體物件、各種型別庫物件都是。如果不用new宣告,就會發生物件為空的錯誤

一個特例:string是引用型別,但它不需要使用new來宣告

dim s as string = “…”

六、execute方法的用法

該方法用於執行SQL語句。根據SQL語句執行後是否返回記錄集,該方法的使用格式分為以下兩種:

1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:

Set 物件變數名=連線物件.Execute(“SQL 查詢語言”)Execute方法呼叫後,會自動建立記錄集物件,並將查詢結果儲存在該記錄物件中,通過Set方法,將記錄集賦給指定的物件儲存,以後物件變數就代表了該記錄集物件。

2.執行SQL的操作性語言時(如:delete,update等),沒有記錄集的返回。此時用法為:

連線物件.Execute “SQL 操作性語句” [, RecordAffected][, Option]

RecordAffected 為可選項,此出可放置一個變數,SQL語句執行後,所生效的記錄數會自動儲存到該變數中。通過訪問該變數,就可知道SQL語句隊多少條記錄進行了操作。

Option 可選項,該引數的取值通常為adCMDText,它用於告訴ADO,應該將Execute方法之後的第一個字元解釋為命令文字。通過指定該引數,可使執行更高效。

七、思維導圖

這裡寫圖片描述