八宝书库 > 文学其他电子书 > VC语言6.0程序设计从入门到精通 >

第76部分

VC语言6.0程序设计从入门到精通-第76部分

小说: VC语言6.0程序设计从入门到精通 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






    1.数据查询  



    数据查询是数据库中最重要的操作,SQL 语句提供 SELECT 语句进行数据的查询,该语 

句具有灵活的使用方式和丰富的功能,其一般格式如下:  



    SELECT 'ALL | DISTINCT' 《 目标列表达式》 '; 《 目标列表达式》 ' …  



   FROM  ';  ' …  



    'WHERE '  



    'GROUP BY  HAVING  ''  



    'ORDER BY  'ASC | DESC''  



    整个 SELECT 语句的含义是,根据 WHERE 子句的条件表达式,从 FROM 子句指定的 

基本表或视图中找出满足条件的元组,再按 SELECT 子句中的目标列表达式,选出元组中的 

属性值形成结果表。如果有 GROUP 子句,则将结果按的值进行分组,该属性的列 



                                                                ·341 ·  


…………………………………………………………Page 353……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



值相等的元组为一个组,每个组产生结果表中的一条记录。通常会在每组中作用集函数。如 

果 GROUP 子句带有 HAVING 短语,则只有满足指定条件的组才会输出 。如果有 ORDER 子 

句,则结果还要按进行排序,ASC 表示升序,DSEC 表示降序。下面举几个简单的 

例子(这里进行操作的数据库就是上节创建的数据库 )。 

                                                    

    (1)查询表 Contact 中的所有记录:  



    select * from Contact  



    (2 )查询所有人的姓名:  



    select Name from Contact  



    (3 )查询王明的电话和地址:  



    select Telephone; Address from Contact where Name=’王明’  



    (4 )将表 Personal 中所有人按年龄由小到大排序。  



    select * from Personal order by Birthday desc  



    2 .插入记录  



    插入记录使用的是 INSERT 语句,一般格式如下:  



    INSERT INTO  '( ';  '…)'  



    VALUES ( ';  ' …)  



    INSERT 语句的功能是将新元组插入指定表中,其中新记录属性列 1 的值为常量 1,属性 

列 2  的值为常量 2 ,依次类推。如果某些属性列在 INTO 子句中没有出现,则新记录在这些 

列上将取空值。不过需要注意的是,在表定义时说明了 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 语句或存储过程  

 CreateParameter    用指定的名称、

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的