'前言:<span style="font-family: Arial, Helvetica, sans-serif;"> VB6.0對數(shù)據(jù)庫的操作方法很多,對于初學(xué)者來說也比較亂.用控件操作數(shù)據(jù)庫是很簡潔的,但相對的局限性也變大了.總結(jié)了相對簡介而使用的幾個功能希望大家喜歡.</span>
</pre><pre name="code" class="vb">
</pre><pre name="code" class="vb">
</pre><pre name="code" class="vb">
'引用"Microsoft ActiveX Data Objects 6.0 Library", '這個東西的簡稱就是ADO,它是VB6數(shù)據(jù)庫最核心的 '對象群,也是VB數(shù)據(jù)庫開發(fā)人員經(jīng)常所引用的對象 '庫,在VB6中你可以看到它的各種版本,從2.0版到 '我們還要引用對象庫"Microsoft ADO Ext 6.0. For DDL Security",簡稱為ADOX, '其庫文件名為是:Msadox.dll。ADOX是對 ADO 對象和編程模型的擴展,它將 ADO '擴展為包括創(chuàng)建、修改和刪除模式對象,如表格和過程。它還包括安全對象,用于 '維護用戶和組,以及授予和撤消對象的權(quán)限 ' Catalog 包含描述數(shù)據(jù)源模式目錄的集合? ' Column 表示表?索引或關(guān)鍵字的列? ' Group 表示在安全數(shù)據(jù)庫內(nèi)有訪問權(quán)限的組賬號? ' Index 表示數(shù)據(jù)庫表中的索引? ' Key 表示數(shù)據(jù)庫表中的主關(guān)鍵字?外部關(guān)鍵字或唯一關(guān)鍵字? ' Table 表示數(shù)據(jù)庫表,包括列、索引和關(guān)鍵字。 ' User 表示在安全數(shù)據(jù)庫內(nèi)具有訪問權(quán)限的用戶賬號? 'ADODB是動態(tài)數(shù)據(jù)鏈接對象 'Dim Rst As New ADODB.Recordset Private Sub Create_Database_Click(Index As Integer) '建庫 這里建立的mdb文件,用VB自帶的ACCESS是無法打開的.需要下載Access2000打開mdb文件,觀察數(shù)據(jù)庫的刪建情況. Set cat = New ADOX.Catalog '當前目錄下建立名為 newdata的Access數(shù)據(jù)庫 'cat.Create ("Provider=Microsoft.jet.oledb.4.0;DATA SOURCE=" + App.Path & "\newdata.mdb" + ";") cat.Create ("provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;") Private Sub Delete_Database_Click() '在模塊中引用Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long 'API 刪除函數(shù) 'DeleteFile "C:\Users\wangqi\Desktop\數(shù)據(jù)庫\newdata.mdb" '絕對路徑 DeleteFile "" & App.Path & "/newdata.mdb" '如果你用絕對路徑寫程序,當你的程序用在其他電腦上的時候,路徑就變了。所以寫程序盡量寫相對路徑,方便移植。 Private Sub Create_Table_Click() Dim cn As New ADODB.Connection '用ADODB需要引用Microsoft ActiveX Data Objects 6.0 Library.之前我們已經(jīng)引用過了。 cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false" 'newdata:數(shù)據(jù)庫的名字 cn.Execute "create table [" & real_time & "] ([dat] DATE,[x_temperature] integer,[y_temperature] integer,[x_weight] integer,[y_weight] integer);" '這里就可以用now函數(shù)做表的名子 'cb.Execute "create index index_dat on [" & Now() & "] (dat)" '這個寫法也ok cn.Execute "create index index_dat on [" & real_time & "] (dat)" cn.Execute "create index index_x_temperature on [" & real_time & "] (x_temperature)" cn.Execute "create index index_y_temperature on [" & real_time & "] (y_temperature)" cn.Execute "create index index_x_weight on [" & real_time & "] (x_weight)" cn.Execute "create index index_y_weight on [" & real_time & "] (y_weight)" Private Sub Delete_Table_Click() Dim cn As New ADODB.Connection cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false" cn.Execute "drop table [" & real_time & "];" '[要刪除的表名] Private Sub Create_Row_Click() Dim Rst As New ADODB.Recordset 'Rst為記錄集對象實例 Dim cn As New ADODB.Connection cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false" 'newdata:數(shù)據(jù)庫的名字 str = "select *from [" & real_time & "] " '記錄集的打開方法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Options ' source可選項,指明了所打開的記錄源信息.可以使合法的命令,對象變量名,SQL語句,表明,存儲過程調(diào)用,活保存記錄集的文件名. ' ActiveConnection可選項,合法的已打開的Cnnection對象的變量名,或者是包含ConnectionString參數(shù)的字符串 ' CursorType可選項,確定打開記錄集對象使用的指針類型 ' LockType可選項,確定打開記錄集對象使用的鎖定類型 ' AdOpenForwardOnly = 0 只能用MoveNext讀取,并且打開的同事建立的數(shù)據(jù)庫的備份,不能即時體現(xiàn)數(shù)據(jù)庫記錄狀態(tài),比如記錄的編輯和增減. ' AdOpenKeyset = 1 可上下滾動的游標,給打開的記錄創(chuàng)建了一個關(guān)鍵字列表,類似記錄集的描述,訪問的時候才去去的數(shù)據(jù)值,就是說 ' 可以即時看到修改信息,但是不能即時的到數(shù)據(jù)是否刪除的信息,因為這個關(guān)鍵字列表是事先初始化好的. ' AdOpenDynamic = 2 完全可以滾動,可得到數(shù)據(jù)的最新狀態(tài),執(zhí)行效率也會有所降低(常用). ' AdOpenStatic = 3 完全可以滾動,但是和adOpenKeyset類似,它先將數(shù)據(jù)庫備份文件之后進行操作.可以斷開數(shù)據(jù)庫連接后繼續(xù)使用 ' AdLockReadOnly = 1 只讀鎖,不能修改記錄 ' AdLockPessimistic = 2 悲觀鎖,操作者打開之后立即上鎖,知道修改完成或者放棄修改位置,此時其他人無法編輯. ' AdLockOptimisitic = 3 樂觀鎖,當記錄將要被更新的時候才開始上鎖,但是不能保證在提交修改之前是否有人改動過. ' AdLockBatchOptimistic = 4 批量樂觀鎖,SOL server中要使用它,必須打開一個可上下滾動的游標,如AdOpenKeyset,AdOpenStatic. 'Rst.AddNew ([FieldList],[values]) FieldList為一個字段名,或是一個字段數(shù)組 '建行Form7.Adodc1.Recordset.AddNew ' Adodc1.Refresh Private Sub Delet_Row_Click() 'Recordset.Delete AffectRecords '其中的,AffectRecords參數(shù)是確定Delete方法作用的方式的,它的取值如下: ' adAffectCurrent 只刪除當前的記錄 ' adAffectGroup 刪除符合Filter屬性設(shè)置的那些記錄.為了一次能刪除一組數(shù)據(jù),應(yīng)設(shè)置Filter屬性 'MoveFirst,MoveLast,MoveNext,MovePrevious方法,移動到指定Recordset對象中的第一個、最后一個、下一個或上一個記錄并使該記錄成為當前記錄. Dim Rst As New ADODB.Recordset 'Rst為記錄集對象實例 Dim cn As New ADODB.Connection cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false" 'newdata:數(shù)據(jù)庫的名字 str = "select *from [" & real_time & "] " Rst.MoveLast '將指針指向最后一行記錄進行刪除.如果沒有這一指令,刪除的將是第一行
|