按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
列上将取空值。不过需要注意的是,在表定义时说明了 NOT NULL 的属性列不能为空值,否
则出错。下面是一个简单例子。
往表 Contact 中插入一条记录:
insert into Contact values(’11’; ’苏培’; ’62777098’; ’清华大学计算机系’)
3 .更新记录
更新记录通过 UPDATE 子句完成,一般格式如下:
UPDATE SET = '; = ' …
'WHERE '
例如,如果要更改上面刚插入的记录,则语句如下:
update Contact set Name=’苏娟’; Telephone=’62788155’ where Name=’苏培’
4 .删除记录
SQL 中用 DELETE 子句实现删除记录的操作,一般格式如下:
DELETE FROM 'WHERE '
例如,如果要删除前面插入的记录,SQL 语句如下:
delete from Contact where ID=11
12。3。3 关系数据库的联合查询技术
能够从多个表中选择和操作数据是 SQL 的特色之一,这又叫做联合查询技术,它包括联
·342 ·
…………………………………………………………Page 354……………………………………………………………
第 12 章 数据库开发
合查询和连接查询。
1.联合查询
联合查询是通过 UNION 运算符实现的,它可以将多个 SELECT 语句的查询结果合并,
使之作为一个结果集合显示(各结果集的数据类型要相同 )。UNION 的语法格式如下:
SELECT_STATEMENT
UNION 'ALL' SELECT_STATEMENT 'UNION 'ALL' SELECT_STATEMENT' …
例如,如果要显示出表 Contact 和表 Personal 中所有人的姓名,则 SQL 语句如下:
select Name from Contact union select Name from Personal
2 .连接查询
通过连接运算符可以实现多个表查询 。连接是关系数据库模型的主要特点,也是它区别
于其他类型数据库管理系统的一个标志。
通常的连接语法格式为:
FROM JOIN_TABLE JOIN_TYPE JOIN_TABLE 'ON (JOIN_CONDITION )'
其中,JOIN_TABLE 是连接操作的表名,JOIN_TYPE 是连接类型,它分为内连接、外连
接和交叉连接 3 类。
(1)内连接
内连接(INNER JOIN )又分为等值连接、不等连接和自然连接 3 种。等值连接在连接条
件中使用“= ”运算符比较被连接的列值,其查询结果中列出被连接表中的所有列,包括重
复列;不等连接在连接条件中使用除“= ”之外的其他比较运算符;自然连接使用“= ”运算
符比较被连接的列值,但查询结果中不包括重复列。
(2 )外连接
外连接分为左外连接(LEFT OUTER JOIN 或 LEFT JOIN )、右外连接(RIGHT OUTER
JOIN 或 RIGHT JOIN )和全外连接(FULL OUTER JOIN 或 FULL JOIN )。与内连接不同的是,
采用外连接时,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左
外连接时)、右表(右外连接时)和两个表(全外连接时)中的所有数据行。
(3 )交叉连接
交叉连接(CROSS JOIN )不带 WHERE 子句,返回被连接的两个表所有数据行的笛卡
尔积。
12。4 ADO 基础知识
在第 1 节中介绍了以前的几种 Visual C++连接数据库的技术。Visual C++虽然对数据库的
支持很强大,功能也很全面,但是不管是先前的 ODBC 还是 DAO ,再到后来的 OLE DB,
用 Visual C++来开发数据库总是很麻烦,特别是其中的数据转换令初学者十分头疼。不过,
等到 ADO 技术开发出来以后,这些都变得容易了。
·343 ·
…………………………………………………………Page 355……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
12。4。1 ADO 的技术特点
ADO 的全称是 ActiveX Data Objects ,它是微软公司为数据库应用程序开发的新接口。
ADO 基于 ,提供编程语言可利用的对象,它不仅面向 Visual C++ ,同时还提供面向其
他开发工具的应用,如 Visual Basic 、VJ 等,甚至还提供面向诸如 VBScript 、JavaScript 等脚
本语言的应用。ADO 的底层是 OLE DB,不仅能访问关系型数据库,也能访问非关系型数据
库。ADO 对 OLE DB 的包装是相当成功的,相对于 OLE DB 中众多的接口来说,ADO 对象
模型简明扼要,没有一点多余的东西,并且其功能还要比 DAO 强大得多。并且可以说到目
前为止,ADO 是目前最快的数据库访问的中间层。
12。4。2 ADO 的结构
ADO 的结构如图 12…19 所示。从图中可以看出,ADO 模型包含了 7 个对象和 4 个集合。
图 12…19 ADO 结构图
o 连接对象(Connection ):用于与数据源的连接,以及处理一些命令和事务。
o 命令对象(mand ):用于处理传递给数据源的命令。
o 记录集对象(Recordset ):用于处理数据的表格集,如获取和修改数据。
o 域对象(Field ):用于表示记录集中的列信息,包括列值以及其他信息。
o 参数对象(Parameter ):用于对传送给数据源的命令赋参数值。
o 属性对象(Property ):用于操作在 ADO 中使用的其他对象的详细属性。
o 错误对象(Error ):用于获得连接对象所发生的详细错误信息。
o 域集合(Fields ):记录集对象中包含了域对象的集合,域对象的集合中包含了所有代
表记录集中每列的域对象。
o 参数集合(Parameters ):命令对象中包含了参数对象的集合,参数集合中包含了应用
于命令对象的所有参数对象。
o 属性集合(Properties ):在连接对象、命令对象、记录集对象和域对象中都包含了属
性对象的集合,属性对象的集合中包含了这些对象的所有特性。
o 错误集合(Errors ):连接对象中包含了错误对象的集合,错误集合中包含了在一次连
接数据源时所产生的所有错误对象。
·344 ·
…………………………………………………………Page 356……………………………………………………………
第 12 章 数据库开发
12。5 ADO 的对象和集合
12。5。1 连接对象
连接对象即 Connection 对象,它代表与数据源之间的一个连接,其常用的方法和属性分
别如表 12…2 和表 12…3 所示。
表 12…2 连接对象的方法及其说明
方法 说明
Open 打开到数据源的连接
Execute 执行指定的查询、SQL 语句、存储过程或特定提供者的文本等内容
Close 关闭 Connection 对象,释放所有关联的系统资源
BeginTrans 启动新的事务
mitTrans 保存所有更改并结束当前事务,也可启动新事务
RollbackTrans 取消当前事务中所作的任何更改并结束事务,也可启动新事务
表 12…3 连接对象的属性及其说明
属性 说明
可以读写,其值可能为 AdXactmitRetaining 和 AdXactAbortRetaining 中任意
Attributes
一个
ConnectionTimeout 指示在终止尝试和产生错误前建立连接期间需等待的时间
mandTimeout 指示在终止尝试和产生错误前执行命令期间需等待的时间
ConnectionString 包含用来建立到数据源的连接的信息
DefaultDatabase 指示 Connection 对象的默认连接数据库
IsolationLevel 设置 Connection 对象的隔离级别
Mode 设置或返回当前连接上提供者正在使用的访问权限
Provider 设置或返回连接提供者的名称
Version 返回 ADO 执行的版本号
利用此对象,用户可以进行以下一些操作:
o 在进行连接前,通过 ConnectionString、ConnectionTimeOut 和 Mode 属性来配置建立
连接的信息、建立连接的超时限制和访问模式。
o 通过 CursorLocation 属性支持批处理方式。
o 通过 DefaultDatabase 属性设置缺省的连接数据库。
o 通过 IsolationLevel 属性设置 Connection 对象的隔离级别。
o 通过 Provider 属性设置 OLE DB 的提供者。
o 通过 Open()和 Close()方法分别来建立和关闭与数据源的连接。
o 通过 Execute()方法来执行命令,通过 mandTimeout 属性设置执行命令超时的时限。
o 通过 BeginTrans() 、mitTrans() 和 RollbackTrans()方法以及 Attributes 属性进行事务
控制。
o 通过 Errors 集合检查数据源的错误信息。
o 通过 Version 属性得到 ADO 的版本信息。
o 通过 OpenSchema()方法来得到数据库的表信息。
·345 ·
…………………………………………………………Page 357……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
12。5。2 命令对象
命令对象即 mand 对象,一个 mand 对象代表一个对数据源执行的命令,利用此
对象可以进行数据库的一些操作,比如查询、修改等。
mand 对象的主要方法和属性如表 12…4 及表 12…5 所示。
表 12…4 命令对象的方法及其说明
方法 说明
Execute 执行在 mandText 属性中指定的查询、SQL 语句或存储过程