一个好用的数据库类

4星(超过85%的资源)
所需积分/C币:10 2008-05-14 08:36:06 5KB APPLICATION/X-RAR
22
收藏 收藏
举报

一个好用的ODBC数据库类CMYODBC --- VC数据库开发之一一、引言感觉MFC的CRecordset类不是很好用,因为我们要想使用的话必须为每个查询从CRecordset类派生出一个新类,或者进行动态数据交换。在VC知识库第六期上面有一篇介绍"单独使用CRecordset"文章,可是上面的CRecordset打开方式只能使用CRecordset::forwardOnly,游标只能向前滚动,而且用这种方式,你根本无法从打开的记录集中获得本次查询得到了有多少列。有一次在应用的时候,我只好通过捕获CRecordset::GetFieldValue()的异常来得到查询的结果有多少列。为了使用的方便,我自己写了一个数据库类CMYODBC,它是用ODBC API写的,它支持各种sql语句,支持事务处理。它最好的地方在于,对于查询的记录集实现了动态绑定,这是通过类CODBCSet来实现的。要说明的是,这两个类可以说比较简单,两个类的代码量很少,所以建议感兴趣的朋友看一下它的代码,下图是本代码运行效果图: 二、原理其实无论是使用ODBC API还是使用ORACLE的OCI(对于ORACLE的OCI感兴趣的朋友,欢迎一起探讨,OCI的功能很强大,支持动态绑定,支持pl/sql,它的类的封装和CMYODBC很相似,用它来代替ODBC编程,可以解决ODBC的效率问题)其过程都很相似,一般分为以下几个过程:1 初始化工作环境 2 连接数据源 3 操作数据源 4 检索结果集 5 更新结果集 6 事务处理 7 断开连接,释放各种句柄 大家都知道在使用CDatabase时候,如果要执行的是select语句的话,那么要通过CRecordset来检索结果集,而CRecordset类要我们先选择表等来先进行绑定,这样我们使用的时候很不方便,其实我们根本不需要这样做,而且我们也不需要知道这次执行的是关于那个数据库那张表的sql语句,因为在执行完SQLExecDirect()后,可以通过调用SQLNumResultCols() 、SQLColAttribute()等函数来获得执行的结果的很多属性,如这次执行的结果集是多少列、每列的字段名、列的类型等,然后根据类型可以动态分配内存,然后在用这些内存去绑定,最后能过SQLFetch()来得到结果集。在CMYODBC这个类里是通过CODBCSet类应用上面的原理来实现自动绑定的。下面介绍一下类CMYODBC的使用方法:1  通过调用ConnectDB(const char *cpServerName, const char *cpUserName, const char *cpPassword)函数来联接数据库。其中的参数意义如下: cpServerName-----ODBC数据源名 cpUserName-------用户名 cpPassword-----口令 2  通过调用ExeSqlDirect(const char *cpSqlStmt)函数可以执行一些操作数据源的语句,如修改、删除语句等。其中的参数意义如下: cpSqlStmt------你要执行的sql语句,如delete from emp where deptno < 20 3  如果要执行事务的话,调用ExecTrans(CStringList &strSqlList)函数,其中的参数 strSqlList表示你要执行的一系列sql语句。 4 如果要执行select语句的话,通过下面的步骤: I 声明一个CODBCSet 对象,如 CODBCSet rSet; II然后调用函数PrepareSql(const char *cpSql, CODBCSet &rset),其中的参数的意义如下: cpSql----代表要执行的select语句 rset-----表示一个CODBCSet的引用,你要把上面声明的对象传递进去。 III调用FetchData()函数来取得结果集。 5 通过调用函数DisConnect()断开和数据源的连接。三、实例练习下面就通过上面的例子一起来看一下这个类到底怎么样,为了方便,我建了一个简单的access数据库test.mdb,在这个数据库中也只有一张表emp,它有三个字段。在下面的工程的InitInstance ()中,通过代码为它自动建立了一个叫做"daliu"的ODBC数据源。步骤一: <br

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
zt_xcyk 在项目中很有帮助,谢谢分享。
2016-03-17
回复
北京老周 很好用,我做了详细的整理,后来发现在网上还有类似的叫做《ODBC API 开发指南》,好像是同一篇文章,原作者不知道是谁,对原作者致敬。对转发者表示感谢!
2014-07-23
回复
lewichy 简单、清晰、实用,帮助很大
2014-03-24
回复
阿拉阿拉雷 很好用的一个ODBC数据库类
2012-12-07
回复
hohollw 简单、清晰、实用,帮助很大,谢谢提供
2011-10-12
回复
ouyangzhongwen 这个东西太好用了。我用到程序中,大大方便编程。顶啊…………
2011-09-16
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
一个好用的数据库类 10积分/C币 立即下载
1/0