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