【聚杰网VC】VC下异构数据源数据共享的实现
由于与数据库的连接是通过Cdatabase类对象来实现的,所以可以通过赋予CrecordSet类对象参数m_pDatabase以连接不同数据库的Cdatabase对象指针,就可以动态地连接数据库,示例代码如下:
(3)动态连接表
表的动态连接可以利用在调用CrecordSet::Open()函数时指定SQL语句来实现。同一个记录集对象只能访问具有相同结构的表,否则查询结果将无法与变量相对应。解决的办法是在不同的情况下使用不同的SQL语句,示例代码如下:
(4)对数据库的其他操作
添加记录可以使用AddNew()函数,要求数据库必须是以允许增加方式打开。
修改记录可以使用Edit()函数(m_pSet是指向结果集m_recordset2的指针)
查询记录
查询记录可以使用CRecordSet::Open()和CRecordSet::Requery()成员函数。在使用CrecordSet类对象之前,必须使用CRecordSet::Open()函数来获得有效的记录集。一旦已经使用过CRecordSet::Open()函数,则下一次查询时就可以用CRecordSet::Requery()函数了。
在调用CRecordSet::Open()时,如果已经将一个已经打开的Cdatabase对象指针传给CrecordSet类对象的m_pDatabase成员变量,那么就可以使用该数据库对象建立ODBC连接;否则就需要新建一个CDatabase类对象并使其缺省的数据源相连,然后进行CrecordSet类对象的初始化。缺省数据源由GetDefaultConnect()函数获得。查询方法如下:
1)通过SQL语句打开记录集
SQL语句中包含查询条件
2)使用m_strFilter和m_strSort
查询过程中也可以利用CrecordSet的成员变量m_strFilter和m_strSort来执行条件查询和结果排序:
EMPLOYEE_AGE是参数值
对应的SQL语句为
3)参数查询
利用参数查询可以更直观、更方便地完成条件查询任务。
声明参变量
在构造函数中初始化参变量
将列与参数进行绑定
完成以上步骤后就可以利用参变量进行条件查询了:
参变量的值按绑定的顺序替换查询字串中的“?”适配符
如果查询结果是多条记录,可以用CrecordSet类的函数MoveFirst()和MoveNext()等函数来取得结果集中相对应的记录。
删除记录
应用Delete()函数,且在调用Delete() 函数后不需要再调用Update() 函数。
撤销操作
如果用户选择了增加或修改记录后希望放弃当前操作。可以在调用Update()函数之前调用CrecordSet::Move(AFX_MOVE_REFRESH)来撤销增加或修改模式,并恢复在增加或修改模式之前的当前记录。其中参数AFX_MOVE_REFRESH的值为0。
(5)SQL语句的直接执行
通过CrecordSet类可以完成大多数的查询操作,但有时需要对数据库建立新表、删除表和建立新的字段等,这就需要用到Cdatabase类直接执行SQL语句的机制。这可以通过Cdatabase::ExecuteSQL()函数来完成。
Visual C++中的ODBC类库可以帮助程序员完成绝大多数的数据库操作。利用ODBC技术可以使程序员从具体的DBMS中解脱出来,从而极大地减少了软件开发的工作量,提高了效率并增强了软件的可靠性
4 .结束语
随着信息技术的高速发展,实现异构数据库的数据共享,可以最大限度的减少不必要的开支,用VC++的ODBC技术,可以很好的解决DBMS本身异构的多源异构数据库的共享问题。
1 2




