
從20世紀50年代中期開始,計算機的應用由科學研究部門擴展到企業、行政部門,數據處理迅速
上升為計算機應用的主要方面。在計算機的三大應用中(科學計算、數據處理及過程控制),數據處理所
占比重約為70%左右。在60年代末,數據庫技術就是作為數據處理中的一門技術發展起來的。
第一章數據庫編程基礎
1.1.1基本概念和術語
1)數據(Data):是描述事物的符號記錄。數據與其語義是不可分的,數據需要經過語義解釋。
2)數據庫(Databa,簡稱DB):是統一管理的相關數據的集合;能為各種用戶共享,具有最小冗
余度、數據間關系密切,而又有較高的對程序獨立性等特點。
3)數據庫管理系統
(DataBaManagementSystem,簡稱為DBMS)DBMS是位于用戶與操作系統間的一層數據
管理軟件,它為用戶或應用程序提供了訪問DB的方法,包括DB的建立、查詢、更新和各種數
據控件等;DBMS的目的:提供一個可以方便地、有效地存取數據庫信息的環境。
4)數據庫系統(DataBaSystem,DBS)DBS是實現有組織的、動態的存儲大量關聯數據,方便
多用戶訪問的計算機軟件、硬件和數據資源組成的系統,即它是采用了數據庫技術的計算機系統。
5)數據庫技術
數據庫技術是研究數據庫的結構、存儲、設計、管理和使用的一門軟件學科。
6)數據庫系統的組成如下圖所示
1.1.2關系型數據庫中的基本概念
在介紹關系型數據庫的基本概念之前,我們先介紹一下關系模型:
關系模型(relationalmodel)是由若干個關系模式組成的集合。其主要特征是用表格結構表達實
體集,用外鍵表示實體間聯系。關系模型由關系結構、關系操作集合和完整性約束三部分組成。
1)單一數據結構關系
2)關系模型的數據結構非常單一。在關系模型中,現實世界的實體以及實體間的各種聯系均用關系
來表示。在用戶看來,關系模型中數據的邏輯結構是一張二維表。
2)關系操作
關系模型中常用的關系操作包括:選擇(Select)、投影(Project)、連接(Join)、并(Union)、交
(Interction)、差(Difference)等查詢(Query)操作和增加(Inrt)、刪除(Delete)、修改(Update)操作兩大
部分。查詢的表達能力是其中最主要的部分。
關系操作的特點是集合操作方式,即操作的對象和結果都是集合。這種操作方式也稱為一次一
集合的方式。相應的非關系數據模型的數據操作方式為一次一記錄的方式。關系操作涉及關系代數、
元組關系演算和域關系演算。另外還有一種介于關系代數和關系演算之間的語言SQL(Structurel
QueryLanguage)。
3)關系的三類完整性約束:
實體完整性、參照完整性和用戶自定義完整性。其中實體完整性和參照完整性是關系模型必須滿
足的完整性約束條件,應該由關系系統自動支持。
在關系型數據庫中數據以行和列的形式存儲,為了便于理解,我們稱這一系列的行和列為表,
一組表組成了數據庫。關系型數據庫是根據表、記錄和字段之間的關系進行組織和訪問的一種數據庫,
他通過若干表來存儲數據,各數據項之間用關系來組織,關系(relationship)是表之間的一種連接,
通過關系,可以更靈活地表示和操縱數據庫中的數據;另外,用戶可以非常方便的使用查詢(Query)
來檢索數據庫中的數據,一個Query是一個用于指定數據庫中行和列的SELECT語句。關系型數據庫
中通常包含如下3部分:
1)端應用程序(client)
2)數據庫服務器(rver)
3)數據庫(Databa)
以下我們將簡要的介紹一下關系型數據庫中的一些基本概念:
1)表:表是一種按行和列排列的相關信息的邏輯組,類似于工作表單。例如,在表1.1中包含了
一系列有關學生的信息。
表1.1學生基本情況表
2)記錄:在表1.1中,有關學生的信息存放在表的各個行中,這些行被稱為記錄(Record)。一
般來說,數據庫表中的記錄任意兩行都不能相同,不能有兩個所有條件都一樣的學生。例如表1.1有
4個記錄,他們分別描述了四個學生的基本情況。
學號姓名性別年齡班級
0201張明麗女2002-1
0202王維男2102-1
0203李雯女2002-2
0204劉華男
2202-2
3)字段:數據庫表中的每一列稱作一個字段。表是由其包含的各種字段定義的,每個字段描
述他所包含的數據。創建一個數據時,為每個字段分配一個數據類型、最大長度和屬性。字段可包含
各種字符、數字甚至圖形。
4)關鍵字:關鍵字是表中的一個或多個字段,是為快速檢索而被索引的。關鍵字可以是唯一的,
也可以是非唯一的,取決于是否允許重復。唯一關鍵字可以指定為主關鍵字,用來唯一標識表的每行。
例如,在上面的例子中,學號是表的主關鍵字,因為學號可以唯一的標識一個學生。
5)索引:為了更快的訪問數據庫,大多數數據庫都使用索引。數據庫表的索引算法是比表搜索
算法更快的排序算法,每個索引輸入項指向其相關的數據庫行。如果數據庫在尋找記錄時先瀏覽索引,
尋找記錄將變得更容易而且數據返回得更快。
6)關系:數據庫可以由多個表組成,表與表之間可以用不同的方式相互關聯。例如1.2所示的學
生成績表保存了學生的成績,這個表中的記錄可以通過學生的學號和學生基本情況表中的記錄關聯起
來。在表1.2中的學號字段引用了表1.1學生基本情況表中的學號字段,從而把學生的基本情況和學
生成績聯系起來了。
用來建立關系的鍵叫做外部鍵或稱為外鍵,因為它與“外部”表“學生基本情況表”的主鍵關聯。
表1.2學生成績表
庫、表、記錄和
字段間的關系如下圖所示:
數
據字段
庫
記錄
表
表
3
表
2
學號外語高數
物理
02017869
78
02028587
79
學號外語高數物理
目前常用的關系型數據庫
目前常用的關系型數據庫管理系統有:ORACLE、SYBASE、SQLSERVER、MSSQLSERVER、
IBMDB2UDB、INFORMIX等,常用的小型數據庫有:Access、Pradox、Foxpro等,個人用戶比較常
用的是基于中小型數據庫的MSSQLSERVER和Access。這些數據庫的簡介見課本
1.1.3VB數據庫編程中的術語
1)數據庫引擎
數據庫引擎存在于程序和物理數據庫文件之間,將數據訪問對象上的操作轉換為對數據庫文件自身
的物理操作,來處理所有與各種數據庫接口的機制。這使用戶與正在訪問的特定數據庫無關,不管這個
數據庫是本地的VB數據庫,還是所支持的其他任何數據庫格式,所使用的數據訪問對象和編程技術都
是相同的。
Jet數據庫引擎被包含在一組動態鏈接庫(DLL)文件中,運行時,這些文件被鏈結到VB程序。它把應
用程序的請求翻譯成對.mdb文件或其他數據倉庫的物理操作。它真正讀取、寫入和修改數據庫,并處
理所有內部事務,如索引、鎖定、安全性和引用完整性。它還包含一個查詢處理器,接收并執行結構化
查詢語言(SQL)查詢,來實現所需要的數據庫操作。另外還包含一個結果處理器,用來管理查詢所返回
的結果。
2)數據表(Table)
數據表是一組相關的數據按行列來排列,可以把它想象成行列整齊的表格。每一行稱作一條記錄
(Record),每一列稱作一個字段(Field)。
3)記錄(Record)
在表中,每一行就是一條記錄,它唯一描述了一個有意義的事物。一般來說,數據庫表的記錄創建
時任意兩行都不能相同。
4)字段(Field)
在表中每一列就是一個字段,它的每一個元素描述了該元素所在行(記錄)的某一個方面的性質。表
是有其包含的各種字段定義的,每個字段描述了它所含有的數據。創建一個數據庫時,為每個字段分
配一個數據類型、最大長度和其他屬性。字段可包含各種字符、數字甚至圖形、聲音、動畫等多媒體
信息。
5)索引(Index)
為了加快訪問數據庫的速度并提高訪問效率,特別賦予數據表中的某一個字段的性質,使得數據
表中的記錄按照該字段的某種方式排序(升序或降序)。
6)鍵(Key)
鍵就是表中的字段(或多個字段),它(們)為快速檢索而被索引。鍵可以是唯一的,也可以是非唯一的,
取決于它(們)是否允許重復。唯一鍵可以指定為主鍵,用來唯一標識表的每行。
7)關系(Relation)
數據庫可以由多個表組成,表與表之間可以用不同的方式相互關聯。
1.2VB數據庫的編程方法
1.2.1VB數據庫的組成
VB數據庫的組成有三部分:用戶界面、數據庫引擎、數據庫。其中數據庫引擎存在于用戶界面和數
據庫之間,起中介作用,用戶通過它與所要訪問的特定數據庫聯系。不管這個數據庫是本地的VB數據
庫,還是其所支持的其他任何數據庫格式,所使用的數據訪問對象和編程技術都是相同的。
1.用戶界面
用戶界面是進行人機交互的界面,用于顯示數據并允許用戶查看或更新數據。驅動用戶界面的是VB
編寫的應用程序代碼,這些代碼包括用來請求數據庫服務的數據訪問對象和方法,如添加、刪除記錄和
執行查詢等。
由應用程序代碼所發出的服務請求是向數據庫引擎提出的,而不是直接對物理數據庫文件進行操
作。對物理數據庫的直接操作由數據庫引擎發出,并向應用程序返回所需要的結果。
2.數據庫引擎
Jet數據庫引擎包含在一組動態連接庫(DLL)中。運行時動態連接庫文件被連接到VB程序,他把
應用程序的請求翻譯成對.mdb文件或其他數據庫的物理操作。
Jet數據庫引擎被包含在一組動態鏈接庫(DLL)文件中,運行時,這些文件被鏈結到VB程序。它把應
用程序的請求翻譯成對.mdb文件或其他數據倉庫的物理操作。它真正讀取、寫入和修改數據庫,并處理
所有內部事務,如索引、鎖定、安全性和引用完整性。它還包含一個查詢處理器,接收并執行結構化查
詢語言(SQL)查詢,來實現所需要的數據庫操作。另外還包含一個結果處理器,用來管理查詢所返回的
結果。
3.數據庫
對于本地的VB或MicrosoftAccess數據庫來說,就是.mdb文件,對于其他的數據庫,則可能包含
其他擴展名的文件,例如:在SQLSERVER7.0中包含稱為*.mdf和*.ldf的數據庫。
1.2.2VB訪問數據庫的方法
VB提供了多種訪問數據庫的方法,VB可以訪問的數據庫類型有許多種。另外,還可以通過ODBC
訪問SQL服務器,以客戶/服務器的方式進行數據存取。VB訪問數據庫的方法有如下幾種:
1)使用可視化數據管理器
2)使用DATA控件
VB工具箱中提供了一個DATA控件,他是VB開發數據庫應用程序是最常用的控件之一。利用他不
需要任何編程就可以實現對數據庫的訪問。而所要做的工作僅僅是在窗體上添加一個DATA控件和一些
用來顯示數據的約束控件,并且設置它們的屬性。這是訪問已有數據庫的最簡便的方法,在VB實現的很
巧妙。
3)使用DAO訪問數據庫
DAO(DataAccessObjects,DAO數據訪問對象)是一種基于JET數據庫引擎的面向對象的接口。使
用DAO進行數據庫編程非常簡單。
4)使用RDO遠程數據對象
RDO(RemoteDataObjects,遠程數據對象)為使用代碼來創建和操作一個遠程ODBC數據庫系統的
各個部件提供了一個框架。
5)使用ADO數據控件
ADODATA控件使用MicrosoftActiveX對象(ADO)來快速建立數據綁定的控件和數據提供者之
間的鏈接,數據提供者可以是任何符合OLEDB規范的數據源。
6)使用ActiveX數據對象
ActiveX數據對象(ADO)是為Microsoft最新的強大的數據訪問接口OLEDB而設計的,它是VB
支持的三種數據訪問接口之一,其它兩個分別為DAO和RDO。OLEDB可以為任何數據源提供高性能
的訪問,這些數據源包括關系和非關系數據庫、電子郵件和文件系統、文本和圖形、自定義業務對象等。
1.3關系型數據庫標準語言SQL
1.3.1SQL語言概述
SQL(StructuredQueryLanguage)語言是1974年由Boyce和Chamberlin提出的。1986年10月美
國國家標準局(AmericanNationalstandardInstitute,簡稱ANSI)的數據庫委員會X3H2批準了SQL作為
關系數據庫語言的美國標準。同年公布了SQL標準文本(簡稱SQL-86)。1987年國際標準化組織
(InternationalOrganizationforStandardization,簡稱ISO)也通過了這一標準。
此后ANSI不斷修改和完善SQL標準,并于1989年公布TSQL-89標準。1992年又公布了SQL-
92標準(也稱SQL2)。目前ANSI的99版本SQL3,也已經發布了。
我國也制定了SQL的國家標準GB12911,它等效于SQL-89版本。目前關系數據庫管理系統都采用
SQL語言作為數據庫語言,SQL語言成為關系數據庫的核心語言。有方言,支持程度不同。
1.3.2SQL語言功能
1)數據定義(DDL):定義、刪除、修改關系模式(基本表);定義、刪除視圖(View);定義、刪除
索引(Index)
2)數據操縱(DML):數據查詢;數據增、刪改;
3)數據控制(DCL):用戶訪問權限的授予、收回;
?數據查詢的功能可以理解為使用“動詞SELECT”對數據記錄或記錄集進行查詢;
?數據定義的功能可以理解為使用“動詞”對數據庫、基本表、視圖和索引進行定義;
?數據操縱的功能可以理解為使用“動詞”對數據記錄或記錄集進行插入、刪除和修改操
作;
?數據控制的功能可以理解為使用“動詞”對用戶或組進行授予和收回特定權限的控制操作;
特定權限包括所有上述功能。
Select查詢
數據查詢是數據庫應用的核心功能,是數據庫的核心操作。SQL語言提供了SELECT語句進行數據
庫的查詢,該語句具有靈活的使用方式和豐富的功能。數據查詢是對己建立的表中的數據進行檢索的操
作,SELECT語句不會更改數據庫的中的數據。使用SELECT-SQL命令可以選擇查詢表中的任意列,
它至少包括兩個句子,其基本形式為:
SELECT[ALL|DISTINCT]<目標列表達式>[,<目標列表達式>]…
FROM<表名或視圖名>[,<表名或視圖名>]…
[WHERE<條件表達式>]
[GROUPBY<列名1>[HAVING<條件表達式>]]
[ORDERBY<列名2>[ASC|DESC]];
整個SELECT語句的含義是,根據WHERE子句的條件表達式,從FROM子句指定的基本表或視圖
中找出滿足條件的元組,再按SELECT子句中的目標列表達式,選出元組中的屬性值形成結果表。如果
有GROUP子句,則將結果按<列名1>的值進行分組,該屬性列值相等的元組為一組。通常會在每組中
使用集函數。如果GROUP子句帶有HAVING短語,則只有滿足指定條件的組才予以輸出,如果有ORDER
子句,則結果表還要按<列名2>的值的升序或降序排序。
舉例說明
lect學生基本情況表.*from學生基本情況表orderby學生基本情況表.學號
本例命令的意義為:
選取所有”學生基本情況表"內的記錄及字段,并以"學號"大小,由小到大作排序。學生基本情況表.*
表示所有表中的字段
1.4數據庫的建立
數據庫的新建包括數據表、庫、字段及字段屬性的建立。再此我們將介紹幾中創建數據庫的方法:
1)使用可視化數據管理器創建數據庫
通過VB集成開發環境下的“外接程序”菜單下的“可視化數據管理器”命令,就可以使用VB提供的一
個功能強大的數據庫訪問工具來創建和操縱數據庫。實例導引。
2)使用DAO編程創建數據庫
DAO模型是設計關系數據庫系統結構的對象類集合。它提供了管理這樣一個系統所需的全部操作的
屬性和方法,包括創建數據庫,定義表、字段和索引,建立表間關系,定位和查詢數據庫等工具;由于
本方法在創建數據庫時較為復雜,故在此不予介紹。
3)使用MicrosoftAccess2000創建數據庫
Access是一個數據庫管理系統,它之所以被集成到Office中而不是VisualStudio中,是因為它與其
它數據庫管理系統(如)相比更加簡單易學,一個普通的計算機用戶即可掌握并使用它。
注意:在離開Access之前還有一個問題必須解決,就是Access2000與VB6.0的兼容問題,用
Access2000創建的數據庫不能直接被VB6.0訪問,必須經過轉化才行以下將給大家介紹如何使用
Access2000來創建數據庫。進入Access2000
第二章數據約束控件
為數據識別控件,在數據庫中通過它訪問有關的數據信息。
第二章數據約束控件
VB提供了一些具有數據感知功能的控件來配合數據約束控件顯示記錄集中的數據內容,稱
這些控件為數據綁定控件。
2.1Data控件
定義:Data控件是數據約束控件;
可與Data控件綁定的內部控件有:
CHeckBox、PictureBox、Label、
TextBox、Image、ListBox、
ComboBox及OLE控件。
2.1.1Data控件的常用屬性:
1)Connect屬性
該屬性設置所要使用的數據庫的類型,有Access、Excel等類型;
2)DataBaName屬性
該屬性返回或設置數據源的名稱和位置;
3)RecordSource屬性
該屬性設置數據綁定控件的記錄的來源。
2.1.2“設置綁定”
所有的數據綁定控件都有兩個共同屬性:
DataSource和DataField屬性
DataSource用來設置數據源;DataField屬性設置字段名;
2.1.2“設置綁定”
DataSource屬性和DataField屬性的設置必須在Data控件的屬性設置完成之后進行。
2.1.2“設置綁定”
設置綁定的步驟如下:
1)在窗體上放置Data控件;
2)設置Data控件的Connect、DataBaName和RecordSource屬性;
2.1.2“設置綁定”
3)在窗體上放置數據綁定控件;
4)設置綁定控件的DataSource屬性和DataField屬性;
5)如果需要多個數據綁定控件,重復步驟3)和4)。
幾點注意
1、數據庫必須為早期版本的數據庫,所以要進行數據庫的轉換。
2、幾個設置步驟缺一不可!
第三章數據訪問對象(DAO)
1、Jet數據庫引擎
引擎(engine)能夠決定程序管理和數據操作的程序或程序段。數據庫引擎就是操作數據庫的一段程
序或程序段。MicrosoftJet數據庫引擎和數據訪問對象DAO(dataaccessobject)可以創建功
能強大的客戶/服務器應用程序。
第三章數據訪問對象(DAO)
Data控件幾乎不需要任何代碼,僅通過屬性的設置就可以具有訪問數據庫的能力。而利用代碼增強
Data控件的功能,則體現了DAO的部分功能。實際上,Data控件是在高層次上執行DAO,作為一個高
層對象,它封裝了操縱Jet所需的編程任務。本章介紹DAO以及編程技術。
3.1什么是DAO
DAO是數據訪問對象(DataAccessObjects)的簡稱,它包含了很多對象和集合,通過Jet引擎來連
接MicrosoftAccess數據庫和其他數據庫。
3.1什么是DAO
DAO模型為進行數據庫編程提供了需要的屬性和方法。利用DAO可以完成對數據庫的創建,如創
建表、字段和索引,完成對記錄的定位和查詢以及對數據庫的修改和刪除等。
3.2DAO的優缺點
優點:
1)數據訪問對象完全在代碼中運行,使程序員可以擺脫Data控件的限制,使用代碼操縱Jet引擎訪
問數據庫數據,能夠開發出更強大更高效的數據庫應用程序。
2)使用數據訪問對象開發應用程序,使數據訪問更有效,同時對數據的控制更靈活更全面,給程序
員提供了廣闊的發揮空間。
3.2DAO的優缺點
缺點:
數據訪問對象的復雜性,使其使用起來更為復雜和抽象,不如使用Data控件簡單和直觀,可以說,
使用DAO需要使用者具備更多的數據庫操作知識。
使用時的注意事項
1、在使用DAO之前,必須確保已經引用DAO對象。如果沒有引用,采用
以下操作引用DAO庫:單擊“工程”菜單的“引用”選項,出現引用對話框,
選中其中的“MicrosoftDAO3.5ObjectLibrary”項,單擊“確定”按鈕。
2、DAO也只能訪問早期版本的Access數據庫,所以應用時要轉換。
3.3DAO可以識別的數據庫類型
有三種類型:
1)桌面數據庫
*.mdb數據庫,即我們所討論的Access數據庫;
2)外部數據庫
包括dBASEII、MicrosoftFoxProversion2.0等;
3.3DAO可以識別的數據庫類型
3)ODBC數據庫(開放式數據庫連接)
這包括符合ODBC標準的客戶/服務器數據庫,如MicrosoftSQLServer。
3.4DAO中常用對象的方法和屬性
1)WorkSpace(工作區)對象
Workspace對象定義了使用何種方式連接數據庫。在DAO中,可以使用MicrosoftJet引擎或
ODBCDirect中的任何一種,視數據源而定,而連接方式的實現,則可以通過Workspace對象來定義。
Workspace對象還提供了事務處理,為保證數據庫的完整性提供了支持。
1)WorkSpace(工作區)對象的方法
Opendataba方法
該方法用于在工作區中打開數據庫。
Opendataba方法
*語法表示為
tdataba=
taba
(dbname,options,readonly,connect)
Opendataba方法
*參數說明
a)Databa參數可選,為工作區的數據庫對象變量;
b)Dbname參數,用于指定要打開的數據庫文件名或數據庫路徑名稱;
opendataba方法
C)Options:參數可選,該參數對于MicrosoftJet工作區,當其值為True時,以獨占的方式打開數
據庫;其值為Fal(默認)時,以共享方式打開數據庫;
Opendataba方法
d)readonly參數,用于設置是否以只讀的方式打開數據庫,當設置為True時,以只讀方式打開,否
則相反,默認為Fal。
Opendataba方法
e)Connect參數,用于指定打開數據庫的不同連接信息,包括口令等,該參數分為兩個部分,數據
庫類型與其它選項,選項間可以使用分號連接。
Opendataba方法使用舉例
DimdbAsDataba
Setdb=taba("")
表示在工作區中打開名為的數據庫,并建立一個數據庫對象。
2)DataBa對象
即數據庫對象,是用來管理一個打開的數據庫連接的對象,大多數數據訪問都是通過該對象進行
的,是對數據庫實施操作時首先要使用的對象。
2)DataBa對象的方法
OpenRecordt方法
該方法用于創建新的記錄集對
象。
OpenRecordt方法
*語法表示
trecordt=
cordt(
source,type,options,
lockedits)
OpenRecordt方法
*參數說明
a)source參數用于指定記錄的來源,它的來源可以是表名字,查詢名字或SQL語句返回的記錄。
對于MicrosoftJet數據庫,數據來源只能是數據庫表。
OpenRecordt方法
b)Type可選參數,用于指定記錄集的類型。通常該參數可取為:
dbopentable
dbopendynat
dbopensnapshot
c)Options可選參數,指定記錄集的特性。
d)Lockedits可選參數用于指定記錄集是否被鎖定。
3.4DAO中常用對象的方法和屬性
舉例說明
DimsqlAsString
DimdbAsDataba
DimrsAsRecordt
Setdb=OpenDataba(“D口令庫.mdb")
sql=“lect*from口令表where用戶名='"&urname&"'"
Setrs=cordt(sql,dbOpenDynat)
在此將SQL語句作為第一個參數,生成一個動態集或快照類型的記錄集。SQL語句必須寫
成字符串的形式(即必須用引號括起來),這條語句被執行后,rs就代表一組滿足在SQL語句中指定條件
的記錄集。可以對這些記錄使用Recordt對象的任何一種方法。
3.4DAO中常用對象的方法和屬性
3)RecordSet對象
當數據庫和表建立后,就可以對表中的記
錄進行增加、刪除、修改、查詢和定位等
操作,在DAO中,這些操作都是通過記錄
集來實現的,操作記錄集主要是通過對記
錄集對象RecordSet的應用來實現的。
RecordSet對象是一批記錄的集合,由一系
列的記錄和字段組成。
3)RecordSet對象的常用方法
1、AddNew方法
用于向數據表中增加記錄,增加記錄
的步驟可以分為三步:
1)調用AddNew方法
2)給字段賦值(通過數據綁定控件)
3)調用Update方法,將添加的記錄保存到數據表中。
3)RecordSet對象的常用方法
2、Delete方法
用于從記錄集中刪除記錄;
3、Edit方法
用于修改記錄集的當前記錄需要四個步驟:
1)定位到要修改的記錄使之成為當前記錄;
2)調用Edit方法
3)修改字段
4)調用Update方法,確定所作的修改
3)RecordSet對象的常用方法
4)Update方法
用來把添加的新紀錄或把當前
記錄的修改結果保存到數據表
中,該方法只能在Edit方法或
AddNew方法執行之后才能執行。
3)RecordSet對象的常用方法
5、Move方法
使記錄指針移動的方法,有四種:
MoveNext:把記錄指針移到下一條記錄
MovePrevious:把記錄指針移到上一條記錄
MoveFirst:把記錄指針移到第一條記錄
MoveLast:把記錄指針移到最后一條記錄
3)RecordSet對象的常用方法
6、Find方法
順序查找滿足條件的某條記錄
有四種:
FindFirst
FindLast
FindNext
FindPrevious
6、Find方法
應用:rst條件
其中條件為字符串,字符串存放的是
指定字段與常量或變量構成的表達式
如:
rst"學號="&"'"&s&"'"
3)RecordSet對象的常用方法
7、Refresh方法
重新讀取數據庫,刷新記錄集。
RecordSet對象的常用屬性
1、Eof和Bof
記錄定位標志
如果記錄指針位于第一條記錄之前,Bof
屬性為True,否則為Fal;
如果記錄指針位于最后一條記錄之后,Eof
屬性為True,否則為Fal。
RecordSet對象的常用屬性
2、RecordCount屬性
若為表類型的記錄集對象,該屬性為
記錄總數;
若為快照或動態集類型的記錄集對象,
為訪問過的所有記錄的個數;
若記錄集中沒有記錄,該屬性為0。
3.5Select數據查詢
數據查詢是對己建立的表中的數據進行檢索的操作,SELECT語句不會更改數據庫的中的數
據。使用SELECT-SQL命令可以選擇查詢表中的任意列,它至少包括兩個句子,其基本形式為:
3.5Select查詢
SELECT<目標列表達式>【,<目標列表達式>】…
FROM<表名或視圖名>【,<表名或視圖名>】…
【WHERE<條件表達式>】
【GROUPBY<列名1>【HAVING<條件表達式>】】
【ORDERBY<列名2>【ASC|DESC】】
3.5Select查詢
舉例說明
lect學生基本情況表.*from學生基本情況表orderby學生基本情況表.學號
本例命令的意義為:
選取所有”學生基本情況表“內的記錄及字段,并以”學號“大小,由小到大作排序。學生基
本情況表.*表示所有表中的所有字段
3.6DAO運用
系統建立步驟:
1)建立數據庫
2)建立工程,添加相應的控件并將DAO引入此工程;
3)編寫相應的程序代碼;
4)調試程序,運行結果。
程序演示
代碼說明
在模塊中定義的全局變量
PublicdbAsDataba
PublicrsAsRecordt
PublicaddrecordAsBoolean
PublicmodifyrecordAsBoolean
PrivateSubForm_Load()'窗體加載程序
DimsqlAsString
addrecord=Fal
modifyrecord=Fal
initial_button'功能修飾
Setdb=OpenDataba(&"",Fal,Fal)
'表示以共享的方式打開數據庫
sql="lect學生基本情況表.*from學生基本情況表orderby學生基本情況表.學號"
'按照學號順序將學生基本情況表中的所有字段選擇出來
Setrs=cordt(sql,dbOpenDynat)
'此句代表創建由SELECT命令字符串所要選取的記錄形成Dynat記錄形式,并將創建的結果設
置給rs(RecordSet變量)
Count>0Then
‘判斷有無記錄
displayrecord'若有記錄,則調用顯示程序顯示記錄
El
MsgBox"目前沒有任何學生的數據",vbExclamation+vbOKOnly,""
cleardisplay
'若無記錄,則提示信息并調用程序清楚文本框,將光標定位在學號的文本框中
Text1(1).SetFocus
'并要求增加記錄
EndIf
EndSub
'**********************************************************************************
'移動按鈕的功能設計:
'移動按鈕的程序必須有判斷按下哪一個按鈕的功能,并且依按鈕的要求,完成記錄指針的移動和顯
示
PrivateSubCommand1_Click(IndexAsInteger)
Constmove_first=0'定義移至最前的指示常量
Constmove_previous=1'定義移至上一組的指示常量
Constmove_next=2'定義移至下一組的指示常量
Constmove_last=3'定義移至最后的指示常量
SelectCaIndex
Camove_first'若按下移至最前,則移至最前
rst
Camove_previous'若按下移至上一組,則移至上一組
evious
n'在移至上一組時判斷是否移過頭了
MsgBox"這已經是第一組數據",vbOKOnly+vbExclamation,""'若移過頭了,則給出提
示信息并發出警報
rst
Beep
EndIf
Camove_next'若按下移至下一組,則移至下一組
xt
n'在移至下一組時判斷是否移過頭了
st
MsgBox"這已經是最后一組數據",vbOKOnly+vbExclamation,""'若移過頭了,則給出提示
信息并發出警報
Beep
EndIf
Camove_last'若按下移至最后一組,則移至最后一組
st
EndSelect
displayrecord‘調用顯示程序,顯示記錄中的數據
EndSub
PrivateSubCommand5_Click()
DimsAsString
s=InputBox$("請輸入學號","學號搜索","")
Ifs<>""Then
s="學號="&"'"&s&"'"
rsts
hThen
displayrecord
El
MsgBox"目前沒有這個學號的任何記錄",vboknoly+vbExclamation,""
EndIf
EndIf
EndSub
'添加按鈕的功能包括:清除所有文本框中的內容,在將光標移至學號文本框Text1(0)
PrivateSubCommand6_Click()
cleardisplay
savecancel'功能修飾
Text1(0).SetFocus
addrecord=True
'*******************************************************************
'VB提供了一個SetFocus方法,能把焦點移動到某個控件上,將光標移動到文本框是因為Text1(0)
為第一個輸入數據的地方
EndSub
PrivateSubCommand7_Click()
DimdAsInteger
initial_button'功能修飾
d=MsgBox("確定要刪除這筆記錄嗎?",vbQuestion+vbYesNo,"刪除記錄")'提示信息
Ifd=vbYesThen'判斷操作者是否按下是按鈕?若是則刪除,否則不作任何動作
'是則刪除
xt'將記錄移至下一個記錄
Count>0Then'若有記錄則顯示目前記錄內容
n
st
EndIf
displayrecord
El'若無記錄則增加一組空白記錄并清除窗體顯示
cleardisplay
EndIf
EndIf
EndSub
PrivateSubCommand8_Click()'修改按鈕
savecancel'功能修飾
Text1(0).SetFocus'將輸入焦點移到文本框text1(0)
modifyrecord=True'置修改標志為有效,表明目前處于修改狀態
EndSub
PrivateSubCommand9_Click()
initial_button'功能修飾
Ifaddrecord=TrueThen'窗體在添加狀態
'添加一組空白記錄
writerecord'將窗體顯示登錄到記錄上
'將記錄寫至數據庫
addrecord=Fal'添加結束,將標志置為無效
El
Ifmodifyrecord=TrueThen'窗體在修改狀態
'修改目前記錄
writerecord'將窗體顯示登錄到記錄上
'將記錄寫至數據庫
modifyrecord=Fal'修改結束,將標志置為無效
EndIf
EndIf
EndSub
PrivateSubCommand10_Click()'取消按鈕的設計
initial_button'功能修飾
addrecord=Fal'使添加和修改的標志為無效,說明添加和修改被取消了
modifyrecord=Fal
Count>0Then'重新顯示記錄內容
displayrecord
El
cleardisplay
EndIf
EndSub
PrivateSubCommand11_Click()
UnloadMe'結束按鈕按下時關閉本窗口
EndSub
'添加savecancel程序:其作用為將一般功能鍵失效,輔助激活
PublicSubsavecancel()
DimiAsInteger
Fori=0To3
Command1(i).Enabled=Fal
Nexti
d=Fal
d=Fal
d=Fal
d=Fal
d=True
d=True
d=Fal
EndSub
'加入savecancel程序的地方有添加按鈕和修改按鈕的command_click事件中
'添加initial_button()程序,其作用是將一般功能鍵按鈕激活而輔助功能按鈕失效
PublicSubinitial_button()
DimiAsInteger
Fori=0To3
Command1(i).Enabled=True
Nexti
d=True
d=True
d=True
d=True
d=Fal
d=Fal
d=True
EndSub
'需要加入initial_button程序的地方有:窗體加載,刪除,保存和取消
'**************************************************************************************
*******************
PublicSubdisplayrecord()'將記錄中的內容顯示到文本框中
DimiAsInteger
Fori=0To4
IfNotIsNull((i))Then
Text1(i)=(i)'將字段內容賦給文本框顯示
El
Text1(i)=""
EndIf
Nexti
'***********************************************************************************
'IsNull()函數判斷是否為空白內容,若為空白內容,則返回值為True,否則返回Fal
EndSub
PublicSubcleardisplay()'如果記錄中無記錄,則清除所有文本框中的內容
DimiAsInteger
Fori=0To4
Text1(i)=""
Nexti
EndSub
系統登陸身份驗證程序
PrivateSubCommand1_Click()'確定登錄按鈕的設置
DimpasswordAsString
StaticnAsInteger'限制登錄的次數,以防止無限次的登錄!
n=n+1
IfText1(0).Text="gly"AndText1(1).Text="888"Then'定義管理員的用戶名和密碼,設置其權限為
最高!
'為硬編碼的方式
UnloadMe
El
Ifn>3Then
MsgBox"你已經超過允許的登錄次數!應用程序將結束!",vbOKOnly+vbExclamation,"登錄
驗證"
End'超過最大的登錄次數,發出提示信息
El
urname=Trim(Text1(0).Text)'獲得用戶名
password=Trim(Text1(1).Text)'獲得用戶密碼
SelectCacheckpassword(urname,password)'調用子程序,判斷用戶名及密碼的合法性
Ca0'用戶不是系統用戶
MsgBox"用戶名不正確,請檢查用戶名是否正確!",vbOKOnly+vbExclamation,"登錄驗證"
Text1(0).Text=""
Text1(1).Text=""
Text1(0).SetFocus
Ca1'用戶名對,但口令錯誤
MsgBox"口令錯誤,請重新輸入密碼!",vbOKOnly+vbExclamation,"登錄驗證"
Text1(1).Text=""
Text1(1).SetFocus
Ca2'登錄成功
MsgBox"登錄成功,歡迎使用本系統!",vbOKOnly
UnloadMe'關閉本窗口,顯示用戶窗口
CaEl
End
EndSelect
EndIf
EndIf
EndSub
PrivateSubCommand2_Click()'取消按鈕的設置
IfMsgBox("確定退出嗎?",vbYesNo+vbExclamation,"登錄驗證")=vbYesThen
UnloadMe
EndIf
EndSub
'子函數,用來判斷用戶名及密碼的合法性
PrivateFunctioncheckpassword(ByValurnameAsString,ByValpasswordAsString)AsByte
DimsqlAsString
Setdb=OpenDataba("D:VB設計1028第三章系統登錄身份驗證密碼庫")'打開數據
庫
sql="lect*from密碼表where用戶名='"&urname&"'"'建立查詢條件,庫中用戶名和輸
入的用戶名相同
Setrs=cordt(sql,dbOpenDynat)
n
checkpassword=0'沒有查詢結果,為非法的用戶
El
Ifpassword<>Trim(("密碼").Value)Then
checkpassword=1'口令不正確
El
checkpassword=2'口令正確
EndIf
EndIf
EndFunction
PrivateSubCommand1_Click()
Setdb=OpenDataba("D:VB設計1028第三章系統登錄身份驗證密碼庫")
'打開數據庫
sql="lect密碼表.*from密碼表where密碼表.用戶名='"&urname&"'"
Setrs=cordt(sql,dbOpenDynat)
us
<>""=en
'判斷兩次輸入的密碼是否一致?一致則將密碼加入到數據庫
(1)=Text1
MsgBox"請記住密碼以便下次訪問!",vbInformation
UnloadMe
El'不一致則重新輸入密碼
MsgBox"兩次輸入的密碼不一致,請重新輸入密碼!",vbInformation
=""
=""
us
EndIf
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
本文發布于:2023-03-03 07:02:32,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1677798152120475.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:vb數據庫.doc
本文 PDF 下載地址:vb數據庫.pdf
| 留言與評論(共有 0 條評論) |