欢迎来到天天文库
浏览记录
ID:10271689
大小:56.00 KB
页数:9页
时间:2018-06-14
《windows利用qt axobject使用ado访问数据库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Windows利用QtAxObject使用ADO访问数据库1.介绍使用Qt在Windows下编程,有时候需要使用COM组件。在Qt中,可以用以下几种方式访问COM组件:1.通过VC等其他语言对要使用的COM封装成动态链接库,然后利用QLibrary加载并使用这些动态链接库2.使用QAxObject这个类直接操作COM组件如果Qt程序要在Windows平台下使用微软提供的数据库,如Access和SQLServer。虽然可以同QSqlDatabase以ODBC的方式访问Access或SQLServer,但这种方式显然不如ADO来的效率更高一些
2、。如果要使用MySQL,Oracle等其他数据库,还是不妨使用QSqlDatabase进行操作。2.实现代码下面是使用AxObject对ADO的封装/*File:ado.h关于ADO的一些定义*/#ifndefADO_H#defineADO_H#include#defineadConnectUnspecified-1#defineadStateClosed0#defineadOpenStatic3#defineadOpenDynamic2#defineadLockOptimistic3#defineadCmdText
3、1typedeflongHRESULT;#defineSUCCEEDED(hr)((HRESULT)(hr)>=0)#defineFAILED(hr)((HRESULT)(hr)<0)#defineADO_DELETE(p)do{if(p)delete(p);(p)=0;}while(0)#endif//ADO_H/*Fileadoconnection.hAdoConnection的声明*/#ifndefADOCONENCTION_H#defineADOCONENCTION_H#include#include4、riant>classQTimer;classAdoConnection:publicQObject{Q_OBJECTpublic:explicitAdoConnection(QObject*parent=0);boolopen(constQString&connectString);boolopen();boolexecute(constQString&sql);QVariantconnection();boolisOpen()const;voidclose();protectedslots:voidexception(intcode,5、constQString&source,constQString&desc,constQString&help);voiddisconnect();private:QAxObject*object;QStringopenString;QTimer*timer;};#endif//ADOCONENCTION_H/*Fileadoconnection.hAdoConnection的实现*/#include"adoconenction.h"#include"ado.h"#include#includeAdoCo6、nnection::AdoConnection(QObject*parent):QObject(parent){timer=newQTimer(this);Q_CHECK_PTR(timer);connect(timer,SIGNAL(timeout()),this,SLOT(disconnect()));object=newQAxObject(this);object->setControl("ADODB.Connection");/*创建ADODB.Connection对象*/object->setProperty("Connecti7、onTimeout",300);/*设置超时时间,确保连接成功*/connect(object,SIGNAL(exception(int,constQString&,constQString&,constQString&)),this,SLOT(exception(int,constQString&,constQString&,constQString&)));}voidAdoConnection::exception(int/*code*/,constQString&/*source*/,constQString&/*desc*/,co8、nstQString&/*help*/){/*输出异常或错误信息*/qDebug()<<"Code:"<
4、riant>classQTimer;classAdoConnection:publicQObject{Q_OBJECTpublic:explicitAdoConnection(QObject*parent=0);boolopen(constQString&connectString);boolopen();boolexecute(constQString&sql);QVariantconnection();boolisOpen()const;voidclose();protectedslots:voidexception(intcode,
5、constQString&source,constQString&desc,constQString&help);voiddisconnect();private:QAxObject*object;QStringopenString;QTimer*timer;};#endif//ADOCONENCTION_H/*Fileadoconnection.hAdoConnection的实现*/#include"adoconenction.h"#include"ado.h"#include#includeAdoCo
6、nnection::AdoConnection(QObject*parent):QObject(parent){timer=newQTimer(this);Q_CHECK_PTR(timer);connect(timer,SIGNAL(timeout()),this,SLOT(disconnect()));object=newQAxObject(this);object->setControl("ADODB.Connection");/*创建ADODB.Connection对象*/object->setProperty("Connecti
7、onTimeout",300);/*设置超时时间,确保连接成功*/connect(object,SIGNAL(exception(int,constQString&,constQString&,constQString&)),this,SLOT(exception(int,constQString&,constQString&,constQString&)));}voidAdoConnection::exception(int/*code*/,constQString&/*source*/,constQString&/*desc*/,co
8、nstQString&/*help*/){/*输出异常或错误信息*/qDebug()<<"Code:"<
此文档下载收益归作者所有