第15章 備份和恢復數據庫
15.1 備份的兩種方式:先創建備份設備(備份數據庫的場所),再將數據庫備份到備份設備上(永久備份設備);直接將數據庫備份到物理文件上(臨時備份設備)
15.2 創建磁盤備份設備:EXEC sp_addumpdevice ‘disk’,’mydiskdump’,’。.mydump.bak’
15.3 常用備份策略:完全備份加差異備份加日志備份,備份和恢復速度都比較快,而且當系統出現故障時丟失的數據較少。
15.4 Transact-SQL語句:BACKUP DATABASELOG jessymin TO mydiskdump WITH INIT
WITH INIT表示覆蓋掉原有內容,相當于“重寫現有媒體”
15.5 恢復的一般順序:先恢復最近的完全數據庫備份;再恢復完全備份之后的最近的差異備份;最后按日志備份的先后順序恢復自最近的完全備份或差異備份之后的所有日志備份。
15.6 Transact-SQL語句恢復過程示例:
1)首先恢復完全備份
RESTORE DATABASE jessymin FROM mydiskdump WITH FILE=1,NORECOVERY
2)然后恢復差異備份(如果有的話)
RESTORE DATABASE jessymin FROM mydiskdump WITH FILE=2,NORECOVERY
3)最后恢復日志文件
RESTORE LOG jessymin FROM mydiskdump
Norecovery表示對數據庫的恢復操作尚未完成,相當于“使數據不再運行,但能還原其他事務的日志文件”。默認為RECOVERY。
第16章 VB開發環境與數據訪問接口
(鄙人此前未曾用過VB,疏漏淺薄之處敬請見諒…)
16.1 標準數據綁定控件:TextBox、CheckBox、ListBox、ComboxBox等
外部(ActiveX)數據綁定控件:DataCombo、DataList、DataGrid、MSHFGrid等
16.2 DBMS支持的兩種數據接口:專用接口(與特定的DBMS有關);通用接口(屏蔽掉每個DBMS底層接口的差異,提供一種標準的訪問方法)
16.3 通用接口:ODBC、OLE DB、JDBC,讓應用程序具有很好的適應性和可移植性;具備同時訪問多種DBMS系統的能力。
16.4 ODBC(只訪關系型DB):開放數據庫互連Open DataBase Connectivity,ODBC應用系統大致工作流程從開始配置數據源到回收各種句柄為此。句柄是32位整數值,代表一個指針。
16.5 OLE DB:對象鏈接與嵌入的數據庫Object Linked and Embed DataBase,是Microsof t OLE對象標準的一個實現,是COM對象,是為數據訪問而設計的一系列COM接口。
16.6 ADO:動態數據對象ActiveX Data Object,建在OLE DB之上的高層接口集,是介于OLE DB底層接口和應用程序之間的接口,它避免了開發人員直接使用OLE DB底層接口的麻煩。
16.7 ODBC與OLE DB的主要區別:
1)ODBC只能訪問關系型數據庫,而OLE DB可以訪問關系和非關系型甚至是無結構的數據。
2)OLE DB克服了ODBC的一個主要缺點:一個ODBC驅動程序需要支持幾乎所有的DBMS特征和功能,這需要大量的工作和初始投資,而OLE DB允許DBMS提供商只實現他們產品的一部分功能。
第17章 VB數據庫應用編程
17.1 CommandType屬性:
adCmdUnknown,表示RecordSource中的命令類型未知;
adCmdTable表示RecordSource屬性的內容來自一張表;
adCmdText表示RecordSource屬性的內容來自一個查詢語句;
adCmdStoredType表示RecordSource屬性的內容來自一個存儲過程
17.2 RecordSet的Move方法組中,MovePrevios和MoveNext沒有自動檢測記錄的當前行指針是否移出了結果集邊界的功能,需編碼實現:
myadodc.RecordSet.MoveNext/MovePrevious
If myadodc.RecordSet.EOF/BOF = True Then
myadodc.RecordSet.MoveLast/MoveFirst
End If
17.3 保存緩沖區中的記錄:Update方法;對當前記錄指針作一個移動操作
17.4 CancelUpdate方法:應在Update方法之前調用,調用了Update方法之后的修改是不能撤銷的;如果沒有添加新記錄也沒有對當前記錄做任何修改,調用CancelUpdate會出錯。
17.5 Find方法:用于在當前結果集中查找滿足條件的記錄
myadodc.RecordSet.Find(“查找條件表達式”)
與 RecordSet對象名.Filter “選擇表達式” 相似(.Filter=adFilterNone還原)
17.6 更新記錄:
mydocdc.RecordSet.Fields(“CustomID”) = Trim(txtCID.Text)
mydocdc.RecordSet.Fields(“Age”) = CInt(txtAge.Text)
mydocdc.RecordSet.Update
17.7 刪除記錄提示窗口:
Dim res As Integer
res = MsgBox(“確實要刪除此行記錄嗎?”,vbExclamation+vbYesNo+vbDefaultButton2)
If res = vbYes Then
Myadodc.RecordSet.Delete
End If
17.10 ADO對象模型
Connection對象 -----ErrorS集合-----Error對象
Command對象 -----Parameters集合 ------Parameter對象
RecordSet對象 -----Fields集合 -----Field對象
17.11 Connection對象可以完成的操作:連接數據源打開數據庫;執行一個數據庫操作命令;利用Error對象檢查數據源返回的出錯信息。
17.12 銷毀內存中的對象:Set 對象名= Nothing
17.13 Command對象的CommandText屬性相當于ADO數據控件的RecordSource屬性;
Command對象的CommandType屬性相當于ADO數據控件的CommandType屬性
17.14 RecordSet對象的主要功能是建立記錄集,并支持對記錄集中各數據的各種操作。允許用戶直接獲取數據,因此RecordSet對象與ADO的訪問過程無關。
17.15 CursorType屬性:
adOpenDynamic動態游標:反映所有用戶對數據的修改,支持向前及向后移動;
adOpenStatic靜態游標:不能反映其他用戶的修改,支持向前及向后,當打開客戶端RecordSet對象時,adOpenStatic為唯一允許的游標類型。當打印報表和其他不需要即時完成更新數據的應用程序來說很有用。
adOpenFowardOnly僅向前游標:默認值。僅支持向前移動,其他與adOpenStatic一致。
adOpenKeyset鍵集游標:介于動態和靜態游標。只看到其他用戶更改的看不到添加刪除的
17.16 CursorLocation屬性:
adUseClient:本地客戶端游標。將整個結果集傳給客戶端,網絡流量大但下載后瀏覽速度快
adUseServer:默認值,僅傳送客戶端需要的數據,網絡流量小但服務器資源消耗大。不支持BookMark屬性(書簽,快速再定位)和AbsolutePosition屬性
adUseNone:沒有使用游標服務。
17.17 RecordSet.Open方法:
myRs.Open Source, ActiveConnection, CursorType, LockType, Options
1)Source支持的類別: 5)Options的可選項
一個返回記錄的Command對象 ///adCmdFile
SQL語句 ――adCmdText
表名 ――adCmdTable
存儲過程名 ――adComdStoredProc
2)ActiveConnection:已打開的Connection對象;一個連接字符串
示例: Dim myCnn As New ADODB.Connection
Dim myRs As New ADODB.RecordSet
myCnn.Connection = “Provider = SQLOLEDB.1;User ID = sa;”_
& “Initial Catalog = 商品經營管理數據庫;Data Source=(local)”
myCnn.Open ‘別忘了“打開”
myRs.Source = “select * from T_Customer”
myRs.ActiveConnection = myCnn
myRs.CursorType = adOpenDynamic
myRs.CursorLocation = adUseClient
myRs.Open , , , , adCmdTalbe
17.18 創建RecordSet對象的三種方法:
1)使用Connection對象:Set myRs = myConn.Execute(“select * from T_customer”);
2)使用Command對象:Set myRs = myComm.Execute;
3)直接使用Open方法:myRs.Open , , , ,
17.19 Error對象:如果最后一次的操作成功則這個集合為空。只有在OLE DB層產生錯誤才會將每個錯誤被翻譯成Error對象,如果指向一個不存在的提供者則Errors集合不會得到任何信息,因為ADO不能發現這個指定的驅動程序,因此會將錯誤傳遞到Visual Basic Errors中。
17.20 三對象結合使用的典型示例:
Dim myCnn As New ADODB.Connection
Dim myCmm As New ADODB.Command
Dim myRs As New ADODB.RecordSet
myCnn.ConnectionString = “Provider = SQLOLEDB.1;User ID = loginID;” _
& “Initial Catalog = jessymin;Data Source =(local) ”
myCnn.Open ‘別忘了“打開”
Set myCmm.ActiveConnection = myCnn
myCmm.CommandText = “select * from T_Customer”
Set myRs = myCmm.Execute
17.21 VB自定義函數示例:將字段空值轉化為空字符串
Private Function convertNull(val As Variant) As Variant
If IsNull(val) = True Then
convertNull = “”
Else
convertNull = val
End If
End Function
17.10 ADO對象模型
Connection對象 -----ErrorS集合-----Error對象
Command對象 -----Parameters集合 ------Parameter對象
RecordSet對象 -----Fields集合 -----Field對象
17.11 Connection對象可以完成的操作:連接數據源打開數據庫;執行一個數據庫操作命令;利用Error對象檢查數據源返回的出錯信息。
17.12 銷毀內存中的對象:Set 對象名= Nothing
17.13 Command對象的CommandText屬性相當于ADO數據控件的RecordSource屬性;
Command對象的CommandType屬性相當于ADO數據控件的CommandType屬性
17.14 RecordSet對象的主要功能是建立記錄集,并支持對記錄集中各數據的各種操作。允許用戶直接獲取數據,因此RecordSet對象與ADO的訪問過程無關。
17.15 CursorType屬性:
adOpenDynamic動態游標:反映所有用戶對數據的修改,支持向前及向后移動;
adOpenStatic靜態游標:不能反映其他用戶的修改,支持向前及向后,當打開客戶端RecordSet對象時,adOpenStatic為唯一允許的游標類型。當打印報表和其他不需要即時完成更新數據的應用程序來說很有用。
adOpenFowardOnly僅向前游標:默認值。僅支持向前移動,其他與adOpenStatic一致。
adOpenKeyset鍵集游標:介于動態和靜態游標。只看到其他用戶更改的看不到添加刪除的
17.16 CursorLocation屬性:
adUseClient:本地客戶端游標。將整個結果集傳給客戶端,網絡流量大但下載后瀏覽速度快
adUseServer:默認值,僅傳送客戶端需要的數據,網絡流量小但服務器資源消耗大。不支持BookMark屬性(書簽,快速再定位)和AbsolutePosition屬性
adUseNone:沒有使用游標服務。
17.17 RecordSet.Open方法:
myRs.Open Source, ActiveConnection, CursorType, LockType, Options
1)Source支持的類別: 5)Options的可選項
一個返回記錄的Command對象 ///adCmdFile
SQL語句 ――adCmdText
表名 ――adCmdTable
存儲過程名 ――adComdStoredProc
2)ActiveConnection:已打開的Connection對象;一個連接字符串
示例: Dim myCnn As New ADODB.Connection
Dim myRs As New ADODB.RecordSet
myCnn.Connection = “Provider = SQLOLEDB.1;User ID = sa;”_
& “Initial Catalog = 商品經營管理數據庫;Data Source=(local)”
myCnn.Open ‘別忘了“打開”
myRs.Source = “select * from T_Customer”
myRs.ActiveConnection = myCnn
myRs.CursorType = adOpenDynamic
myRs.CursorLocation = adUseClient
myRs.Open , , , , adCmdTalbe
17.18 創建RecordSet對象的三種方法:
1)使用Connection對象:Set myRs = myConn.Execute(“select * from T_customer”);
2)使用Command對象:Set myRs = myComm.Execute;
3)直接使用Open方法:myRs.Open , , , ,
17.19 Error對象:如果最后一次的操作成功則這個集合為空。只有在OLE DB層產生錯誤才會將每個錯誤被翻譯成Error對象,如果指向一個不存在的提供者則Errors集合不會得到任何信息,因為ADO不能發現這個指定的驅動程序,因此會將錯誤傳遞到Visual Basic Errors中。
17.20 三對象結合使用的典型示例:
Dim myCnn As New ADODB.Connection
Dim myCmm As New ADODB.Command
Dim myRs As New ADODB.RecordSet
myCnn.ConnectionString = “Provider = SQLOLEDB.1;User ID = loginID;” _
& “Initial Catalog = jessymin;Data Source =(local) ”
myCnn.Open ‘別忘了“打開”
Set myCmm.ActiveConnection = myCnn
myCmm.CommandText = “select * from T_Customer”
Set myRs = myCmm.Execute
17.21 VB自定義函數示例:將字段空值轉化為空字符串
Private Function convertNull(val As Variant) As Variant
If IsNull(val) = True Then
convertNull = “”
Else
convertNull = val
End If
End Function
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |