图形图像 多媒体类 机械电子 办公系列 程序设计 网站开发 数据库教程 路由技术 网络原理 网络应用 考试认证
手机分类
  网站导航: 电脑时代在线 · 程序设计 · VC语言 · VC数据库编程

Visual C++里面地ODBC编制程序实际示例

手机资讯
『Visual C++里面地ODBC编制程序实际示例』如果文章中有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 来源:无 更新时间:2005-8-8 
Microsoft Developer Studio为大多数标准的数据库格式提供了32位ODBC驱动器。这些标准数据格式包括有:SQL Server、Access、Paradox、dBase、FoxPro、Excel、Oracle以及Microsoft Text。如果用户希望使用其他数据格式,则需要安装相应的ODBC驱动器及DBMS。

   用户使用自己的DBMS数据库管理功能生成新的数据库模式后,就可以使用ODBC来登录数据源。对用户的应用程序来说,只要安装有驱动程序,就能注册很多不同的数据库。登录数据库的具体操作参见有关ODBC的联机帮助。

   一、MFC提供的ODBC数据库类

   Visual C++的MFC基类库定义了几个数据库类。在利用ODBC编程时,经常要使用到 CDatabase(数据库类)、CRecordSet(记录集类)和CRecordView(可视记录集类)。

   CDatabase类对象提供了对数据源的连接,通过它可以对数据源进行操作。

   CRecordSet类对象提供了从数据源中提取出的记录集。CRecordSet对象通常用于两种形式:动态行集(dynasets)和快照集(snapshots)。动态行集能与其他用户所做的更改保持同步,快照集则是数据的一个静态视图。每种形式在记录集被打开时都提供一组记录,所不同的是,当在一个动态行集里滚动到一条记录时,由其他用户或应用程序中的其他记录集对该记录所做的更改会相应地显示出来。

   CRecordView类对象能以控件的形式显示数据库记录,这个视图是直接连到一个CRecordSet对象的表视图。

   二、应用ODBC编程

   应用Visual C++的AppWizard可以自动生成一个ODBC应用程序框架,步骤是:打开File菜单的New选项,选取Projects,填入工程名,选择MFC AppWizard (exe),然后按AppWizard的提示进行操作。

   当AppWizard询问是否包含数据库支持时,如果想读写数据库,那么选定Database view with file support;如果想访问数据库的信息而不想写回所做的改变,那么选定Database view without file support。

   选好数据库支持之后,Database Source 按钮会被激活,选中它去调用Data Options对话框。在Database Options对话框中会显示出已向ODBC注册的数据库资源,选定所要操作的数据库,如:Super_ES,单击OK后出现Select Database Tables对话框,其中列举了选中的数据库包含的全部表;选择要操作的表后,单击OK。在选定了数据库和数据表之后,就可以按照惯例继续进行AppWizard操作。

   特别需要指出的是:在生成的应用程序框架View类(如:CSuper_ESView)中,包含一个指向CSuper_ESSet对象的指针m_pSet,该指针由AppWizard建立,目的是在视表单和记录集之间建立联系,使得记录集中的查询结果能够很容易地在视表单上显示出来。

   要使程序与数据源建立联系,需用CDateBase::OpenEx()或CDatabase::Open()函数来进行初始化。数据库对象必须在使用它构造记录集对象之前初始化。

三、实例

   1.查询记录

   查询记录使用CRecordSet::Open()和CRecordSet::Requery()成员函数。在使用CRecordSet类对象之前,必须使用CRecordSet::Open()函数来获得有效的记录集。一旦已经使用过CRecordSet::Open()函数,再次查询时就可以应用CRecordSet::Requery()函数。

   在调用CRecordSet::Open()函数时,如果将一个已经打开的CDatabase对象指针传给CRecordSet类对象的m_pDatabase成员变量,则使用该数据库对象建立ODBC连接;否则如果m_pDatabase为空指针,就新建一个CDatabase类对象,并使其与缺省的数据源相连,然后进行CRecordSet类对象的初始化。缺省数据源由GetDefaultConnect()函数获得。也可以提供所需要的SQL语句,并以它来调用CRecordSet::Open()函数,例如:Super_ESSet.Open(AFX_DATABASE_USE_DEFAULT,strSQL);

   如果没有指定参数,程序则使用缺省的SQL语句,即对在GetDefaultSQL()函数中指定的SQL语句进行操作:

   CString CSuper_ESSet::GetDefaultSQL()
   {return _T(″[BsicData],[MinSize]″);}

   对于GetDefaultSQL()函数返回的表名,对应的缺省操作是SELECT语句,即:

   SELECT *FROM BasicData,MainSize

   在查询过程中,也可以利用CRecordSet的成员变量m_strFilter和m_strSort来执行条件查询和结果排序。m_strFilter为过滤字符串,存放着SQL语句中WHERE后的条件串;m_strSort为排序字符串,存放着SQL语句中ORDER BY后的字符串。如:

   Super_ESSet.m_strFilter=″TYPE=‘电动机'″;
   Super_ESSet.m_strSort=″VOLTAGE″;
   Super_ESSet.Requery();

   对应的SQL语句为:

   SELECT *FROM BasicData,MainSize
   WHERE TYPE=‘电动机'
   ORDER BY VOLTAGE

   除了直接赋值给m_strFilter以外,还可以使用参数化。利用参数化可以更直观、更方便地完成条件查询任务。使用参数化的步骤如下:

   S声明参变量:



   CString p1;
   float p2;

   S在构造函数中初始化参变量:

   p1=_T(″″);
   p2=0.0f;
   m_nParams=2;

   S将参变量与对应列绑定:

   pFX->SetFieldType(CFieldExchange::param)

   RFX_Text(pFX,_T(″P1″),p1);
   RFX_Single(pFX,_T(″P2″),p2);

   完成以上步骤后就可以利用参变量进行条件查询:

   m_pSet->m_strFilter=″TYPE=? AND VOLTAGE=?″;m_pSet->p1=″电动机″;
   m_pSet->p2=60.0;
   m_pSet->Requery();

   参变量的值按绑定的顺序替换查询字串中的“?”通配符。

   如果查询的结果是多条记录,可以用CRecordSet类的函数Move()、MoveNext()、MovePrev()、MoveFirst()和MoveLast()来移动光标。

   2.增加记录

   增加记录使用AddNew()函数,要求数据库必须是以允许增加的方式打开:

   m_pSet->AddNew(); //在表的末尾增加新记录
   m

[1] [2] 下一页

】【关闭窗口
  上一页:
  下一页:
 ·网站导航: 电脑时代在线 · 程序设计 · VC语言 · VC数据库编程
VC数据库编程:相关文章
VC数据库编程点击榜
普通教程面向对象地关系数据库设计
普通教程用VC设计基于ORACLE数据库运用程
普通教程认知 ODBC 和 OLE
普通教程用VC存取数据库里面地大对象
普通教程数据库标准化灵活技术
推荐教程简析Visual C++里面地活动数据对
普通教程用VC设计基于ORACLE数据库办法
普通教程用VC设计基于Oracle地数据库运用
普通教程VC编制程序里面怎么样操作数据库
普通教程魔法单词记忆——DAO访问ACCESS
搞笑自拍|图片故事|美女图库|体坛宝贝|明星爆料|世界奇观|风光摄影|历史回忆|大千世界
VC数据库编程推荐图片
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部  
网站文本地图
  版权所有:电脑时代在线 2005-2009 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2007 www.PCvz.com online services. all rights reserved. 蜀ICP备05015578
Template designed by PCX. Optimized for 1024x768 to Firefox,Opera and MS-IE. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光