VB 版 (精华区)
发信人: student (earth), 信区: VB
标 题: SQL在VB数据库中的使用 (转)
发信站: 哈工大紫丁香 (2001年11月25日19:14:41 星期天), 站内信件
在VB中要想灵活地操作数据库,完成各种复杂操作,就需要掌握结构化查询语言SQL语言
。比如在Data控件中,如果数据源是来自两个或两个以上的表时,就要使用SQL。SQL语
言的操作根据其功能分为:数据查询语言(DQL)、数据操作语言(DML)、数据定义语
言(DDL)以及数据控制语言(DCL)。
1.数据查询语言(DQL)
数据查询负责从表中提取数据并把它交给应用程序,格式如下:
SELECT (字段列表) FROM (表格清单) WHERE (表达式)
仍以前面的Myfile库为例,要得到“张清源”的电话,可以使用下面的查询:
SELECT 电话 FROM Phone WHERE 姓名=“张清源”
SELECT语句的第一部分指名要选取的列,可以包括用逗号分开的一系列字段列表。
如果要选择表中的所有字段,可以用星号(*)代替要输入的字段名,比如:
SELECT * FROM Phone
SELECT语句的第二部分指明要从哪些表中查询数据。在此例中,要查询的表名只有
一个Phone,SQL允许从一个或多个表中查询数据,表间用点号分隔。比如:
SELECT 姓名,作品 FROM Phone,Article WHERE Phone.序号=Address.序号
表达式根据需要也可以使用程序设计语言中使用的逻辑运算符NOT、AND和OR。
2.数据操作语言(DDL)
(1)插入记录(Insert或Insert into):允许在表中添加新记录,比如:
INSERT INTO Phone(姓名,电话,地址) VALUES (′张三′,′3433514′,′福建福
州′)
在第一个括号中指定一个或多个要被插入数据的字段名称,在第二个括号中给出对
应的实际值,用逗号隔开多个字段名。这个语句把三个字符串“张三”、“3433514”、
“福建福州”分别插入表Phone的姓名、电话和地址字段中,形成一个新的记录。
如果在用INSERT添加一条新记录时,有一个或多个字段没有提供字段值时,系统一
般会插入一个缺省值或一个空值:
SELECT * INTO Phone2 FROM Phone
可以有选择地从一个表向另一个表插入多条记录,上例表示把Phone表中的所有记录
都插入Phone2中。
(2) 删除记录(Delete):从表中删除一个或多个记录,一般后跟WHERE 子句,用来
选择要删除的记录。
例如,下面的这个DELETE语句只删除姓名字段的值为“张三”的记录:
DELETE Phone WHERE 姓名=′张三′
如果不给出WHERE 子句,表中的所有记录都将被删除。
(3)更新记录(Update):修改表中已经存在的一条或多条记录,UPDATE语句也可以
使用WHERE子句来选择更新特定的记录:
UPDATE 〈表名〉 SET 〈字段1=值1,字段2=值2,...〉 [WHERE 表达式]
UPDATE Phone SET 姓名=′李四′WHERE 电话=′3433215′
如果不提供WHERE子句,表中的所有记录都将被更新,这在成批修改诸如价格等字段
是很有用的。
3.数据定义语言(DDL)
DDL允许创建或修改表、列和索引,但不能创建数据库,要创建数据库要用CreateD
atabase方法。数据定义语言语句包括:
(1)创建新表(Create Table)和删除表,比如:
CREATE TABLE Phone2(姓名 CHAR(15),工资 INT)
DROP TABLE Phone2
(2)修改表,即在表中增加或删除列的操作(Alter table):比如,
ALTER TABLE Phone2 ADD COLUMN 备注 TEXT
ALTER TABLE Phone DROP COLUMN 备注
(3)在表中建立索引(Create Index)和删除索引(Drop Index)
CREATE INDEX NameIndex ON Phone2(姓名)
DROP I
ODBC方式访问远程数据库
网络上的许多应用,比如IDC(Internet数据库连接器)、ASP(Active 服务器页)以
及Microsoft DBWeb(一种Internet服务器应用编程接口)等需要访问远程数据库时,要通
过ODBC (Open DataBase Connectivity)即开放式数据库连接来进行。
1. 配置ODBC
ODBC通过DSA(Data Source Administrator)程序来管理,它负责在ODBC注册表中
创建一个指定的项。而在程序中调用ODBC时,ODBC驱动程序管理器激活正在使用的相应
数据库的驱动程序。
要在ODBC注册表中创建一数据源项,打开Windows中的“控制面板”,选择“32位O
DBC”,来安装和配置特定数据源所需要的驱动程序(图1)。
图1 ODBC数据源管理器
在打开的“ODBC数据源管理器”中,可以看到“用户DSN”、“系统DSN”、“文件
DSN”、“ODBC驱动程序”等几个选项卡,其中前面三个选项卡描述了DSN的三种类型:
(1)用户DSN→用户DSN选项卡:用户DSN代表计算机的本地数据库,只能应用在当前
机器上,由当前的一个用户使用,并且只对用户可见。
(2)系统DSN→系统DSN选项卡:储存了如何与数据提供者连接的信息,当前计算机上
的所有用户都可以使用系统DSN,它并不仅限于单个用户。
(3)文件DSN→文件DSN选项卡:文件DSN可以由所有安装了相同驱动程序的用户共享
。这些数据源不只限于某一用户或单一计算机专用。当要建立一个与Web服务器一起使用
的数据源时,我们应该建立一个文件数据源,建立这样的文件数据源后,连接信息存储
在一个实际的文件中,不止一个用户可以访问这个文件。并且通过复制扩展名为.DSN的
文件,可以轻易地把应用从一个机器移植到另一个机器。由于以上原因,本讲中的示例
使用文件DSN。
要登记注册一个数据源,可根据实际访问的需要点击相应的选项卡,比如“文件DS
N”选项卡,点击“添加”按钮,选择第一个“Microsoft Access Driver(*.mdb)”表
示要访问的是Access数据库;接下来键入一个要创建的数据源名称,比如“AccessODBC
”,点击“下一步”和“完成”;最后在数据库对话框内点击“选取”,选择需要访问
的数据库,此时如果点击“高级”按钮,还可对数据源增加用户号(UID)和密码(PWD
),系统默认的用户号为admin,密码为空。最后按“确定”退出,在列表中就可以看到
我们所创建的数据源了。
有了以上的注册,我们在应用程序中就可通过ODBC访问数据库了,通过ODBC访问远
程服务器的数据库有三种方法:使用Jet数据库引擎、通过ODBC使用ODBC API绕过Jet引
擎直接到达数据源或者使用远程数据对象(RDO)。
2.通过Jet引擎访问数据源
如果使用ODBC数据源时,不用给出物理数据库文件名,而是向ODBC驱动程序发出一
个引用信息,当一个库改变时,只要在“控制面板”中重新配置ODBC即可,而不必改变
应用程序的代码。例如:
ODBCConnect="ODBC;DSN=AccessODBC;UID=admin;PWD="
在例子中,创建一个ODBCConnect变量,它包含保存在注册表中的数据源名称,还有
用户ID和口令。
然后,把连接串作为参数传递给OpenDatabase的方法就可完成连接了。
SET DBDatabase=Opendatabase("", ,false,ODBCConnect)
也可以把ODBC单独指定为连接串来连接ODBC数据源。例如:
Set DBDatabase=openDatabase("",true,ture,"ODBC;")
在上例中因未指明DSN、UID以及PWD,Windows会显示选择数据源对话框,要求提供
这些信息。
3.使用ODBC API访问数据源
ODBC API是一组函数,它的连接是通过四个句柄来引用的,它允许直接访问ODBC数
据库,而不需要Jet引擎的内部操作。通过ODBC API访问数据库的速度比使用Jet快许多
倍,但ODBC API需要进行许多程序设计和测试的工作,所以通常不采用这种方法访问数
据库。
4.使用远程数据对象(RDO)访问数据源
为了克服Jet引擎太慢而ODBC API又太复杂的弊端,VB5引入了远程数据对象(RDO)
,对访问远程数据库进行了优化,它可以象使用DAO一样轻松地访问数据库,还可使应用
程序在较低档的工作站上运行。RDO有许多基本的对象和方法,在DAO中都有直接等价或
在概念上等价的对象和方法见表1。
表1 RDO与DAO比较 对象名
DAO中等价的概念
作用说明
RDOEngine
DBEngine
代表一个远程数据源
RDOEnvironment
WorkSpace
定义一个与ODBC数据源相连接
RDOConnection
Database
代表与远程数据源的物理连接
RDOQuery
QueryDef
用来封装一个查询定义
RDOResultSet
RecordSet
封装执行查询后返回的数据
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.236.168]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.969毫秒