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毫秒