c语言数据库编程ODBC

摘要:
C语言可以用作数据库,但我以前从未想过它,甚至怀疑它是否可以编写数据库。在搜索信息的过程中,我咨询了几位C语言专家。他们一致的回答是C语言被用作数据库,这似乎是不可能的。他们劝我不要麻烦。但我的导师告诉我,这是可以做到的,c语言数据库可以做得很好。C语言连接到数据库并直接调用odbcapi的函数。在c语言编程中,一切都应该自己完成。具体来说,常见的数据库操作主要由以下odbc函数执行:SQLAllocHandle、SQLConnect、SQLExecute、SQLBindCol、SQLGetData、SQLFetch、SQLDisconnect、SQLEndTran等。

c语言数据库编程

转载自:http://www.cnblogs.com/nliao/archive/2010/09/09/1822660.html
最近我的导师要求我用c语言读出access数据库的数据,我四处查找资料,终于找到了实现的办法,那就是odbc api编程。以前做数据库一直用java和jdbc,要不是用别人封装好的ado,用的很方便,编程也很简单。可用c语言做数据库,以前可是想都没有想过,甚至怀疑它能不能写数据库。在查找资料的过程中,我请教了几个c语言高手,他们的一致答复是c语言做数据库,似乎不可能,劝我不要费心了。可我的导师告诉我,可以做,而且c语言做数据库,可以实现的很好。所以,猛查资料,花了将近一天的时间,终于找到了门路。其实,了解了内幕,还是蛮简单的。现将相关的知识拿出来,和各位高手分享,为新手指路,向前辈展示好学之心。

c语言连接数据库,直接调用odbc api的函数。我们平常用的odbc或者ado之类,都是封装好了的,一般的编程细节我们是看不到的。尤其在ide里边,我们可以直接用拖放的办法实现数据库连接和操作。而c语言编程中,一切都要自己动手。

具体说来,数据库的常用操作主要是由这样几个odbc函数完成的:SQLAllocHandle 、SQLConnect、SQLExecute、SQLBindCol、SQLGetData、SQLFetch、SQLDisconnect、SQLEndTran等。一个简单的数据库连接例子如下:

// Allocate An Environment Handle
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,&EnvHandle);
if (EnvHandle != 0)
SQLSetEnvAttr(EnvHandle, SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3,
SQL_IS_UINTEGER);

if (EnvHandle != 0)
SQLAllocHandle(SQL_HANDLE_DBC, EnvHandle,&ConHandle);
// Connect To The Appropriate Data Source
if (ConHandle != 0)
{
RetCode = SQLConnect(ConHandle, (SQLCHAR *) "DSN-name",SQL_NTS,
(SQLCHAR *) "username",SQL_NTS,
(SQLCHAR *) "password",SQL_NTS);

if (ConHandle != 0 && RetCode == SQL_SUCCESS)
SQLAllocHandle(SQL_HANDLE_STMT, ConHandle,&StmtHandle);

RetCode=SQLExecDirect(StmtHandle, "SELECT * FROM table-name WHERE ID < 20", SQL_NTS);

while (RetCode != SQL_NO_DATA)
{
RetCode = SQLFetch(StmtHandle);
if(RetCode != SQL_NO_DATA){
SQLGetData(StmtHandle, 1, SQL_C_ULONG, &id,sizeof(id), NULL);

}

}

RetCode = SQLEndTran(SQL_HANDLE_DBC, ConHandle,SQL_COMMIT);
/**
* TERMINATION
**/
// Free The SQL Statement Handle
if (StmtHandle != 0)
SQLFreeHandle(SQL_HANDLE_STMT, StmtHandle);
// Terminate The Data Source Connection
if (ConHandle != 0)
RetCode = SQLDisconnect(ConHandle);
// Free The Connection Handle
if (ConHandle != 0)
SQLFreeHandle(SQL_HANDLE_DBC, ConHandle);
// Free The Environment Handle
if (EnvHandle != 0)
SQLFreeHandle(SQL_HANDLE_ENV, EnvHandle);

odbc api编程的最权威的书籍是微软的《odbc程序员手册》,网上有中文版可以下载。

通过阅读odbc资料和编程实践,我深刻的体会到,c语言功能实在太强大了,可以说无所不能。要想成为一位c语言高手,不是很简单的事情,是要吃一点苦头的。记得我的导师给我说,要想成为计算机高手,首先玩转c语言。

看来我还要努力啊!

免责声明:文章转载自《c语言数据库编程ODBC》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[Unity] Unity 2019.1.14f 在Terrain中使用Paint Texture的方法Linux2.6 I/O体系结构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MongoDB超级简明入门教程

1.概念篇 MongoDB和MySQL分别作为非关系型数据库和关系型数据库的代表,通过它们之间的对比可以很快的建立起对MongoDB的认知。 MongoDB MySQL 数据库(Database) 数据库(Database) 集合(Collection) 表(Table) 文档(Document) 记录(record) 对于关系型数...

Hibernate 配置

 Hibernate为操作数据库提供了一系列的API,为了能够准确的使用这些API,要在开发环境里要做很多的环境配置,归结起来有几个重要步骤:  A. 导入正确版本的jar包(hibernate提供的Jar包、数据库驱动包、日志文件包)  B. 编写配置文件(Hibernate配置文件、日志文件配置   笔者将Hibernate的配置做一下详细描述,大家根...

Linux--NIS

一、 环境准备 操作系统:CentOS7.6 服务端安装如下软件: 软件名称 功能 ypserv NIS Server端的服务进程 rpcbind 提供RPC服务 客户端安装如下软件: 软件名称 功能 yp-tools 提供NIS相关的查询指令功能(yp-tools和ypbind必须同时安装) ypbind NIS Client...

ABAP中的AMDP(ABAP-Managed Database Procedures )

ABAP托管数据库过程(ABAP-Managed Database Procedure,以下简称AMDP)是在APAP on SAP HANA开发中的一种优化模式。AMDP使用数据库语言书写,比如Native SQL或者是SQL Script,并且在AMDP类的AMDP方法内实现。因此用它开发数据库过程就有点类似于编辑ABAP类。 简而言之,AMDP允许开...

ABP官方文档翻译 3.8 数据过滤器

数据过滤器 介绍 预定义过滤器 ISoftDelete 何时使用? IMustHaveTenant 何时使用? IMayHaveTenant 何时使用 禁用过滤器 关于using语句 关于多租户 全局禁用过滤器 启用过滤器 设置过滤器参数SetTenantId方法 ORM集成 Entity Framework EntityFramewo...

1 MySQL优化专题

优化 ER图,数据建模与数据字典 1、存储引擎选择 2、列表类型选择 3、范式 4、慢日志查询 5、精准时间记录查询 6、计划任务explain 7、索引 8、锁与事务 9、查询缓存 10、存储过程 11、触发器 12、分区(分表,分库) 14、sphinx 15、读写分离 16、搜索优化 17、网站静态优化 https://www.cnblogs.com...