odbc 链接mysql数据库_ODBC连接MySQL数据库操作实例

本文提供了一段使用VC6编译环境的C++代码,演示如何通过ODBC连接并操作MySQL数据库。代码详细解释了各个步骤,包括分配环境和连接句柄、设置ODBC数据源、执行SQL查询以及数据的检索和输出。只需根据实际数据源信息修改相应参数,即可实现数据库操作。
摘要由CSDN通过智能技术生成

以下展示的一段程序,完成利用ODBC对MySQL数据库操作功能,我的编译环境时VC6,代码中有详细的解释,如果事先完成ODBC数据源的设置工作,那么只要对代码稍作修改即可使用:

#include

#include

#include

#include

#include

#include

#include

int main()

{

/*Step 1 定义句柄和变量 */

SQLHENV hEnv;

SQLHDBC hConnect;

SQLHSTMT hStmt;

SQLRETURN r;

// 分配环境句柄

r = SQLAllocHandle ( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);

if ( r != SQL_SUCCESS )

{

cout << "SQLAllocHandle error!" << endl ;

exit(1);

}

// 设置环境句柄

r = SQLSetEnvAttr ( hEnv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 );

if ( r != SQL_SUCCESS )

{

cout << "SQLSetEnvAttr error!" << endl ;

exit(1);

}

// 分配连接句柄

r = SQLAllocHandle ( SQL_HANDLE_DBC, hEnv, &hConnect);

if ( r != SQL_SUCCESS )

{

cout << "SQLAllocHandle error!" << endl ;

exit(1);

}

/*之上的程序代码读者直接粘贴即可,无限修改;至于具体语句或函数的功能,没有必要深入了解,

只要清楚每一步的作用(注释给出)即可*/

/* 连接ODBC数据库,主要函数中第二个参数test为操作的数据源的名称;第四个参数是操作数据库的用户名

第六个参数是操作数据库的密码*/

r = SQLConnect ( hConnect, (SQLCHAR*) "test", SQL_NTS, (SQLCHAR*) "yuanbohx",

SQL_NTS, (SQLCHAR*) "xiaohuanxiong60", SQL_NTS);

if ( r!=SQL_SUCCESS && r!=SQL_SUCCESS_WITH_INFO )

{

cout << "SQLConnect error!" << endl;

exit (1);

}

char SQLString[200] ;            //用于存储SQL语句

// 分配语句句柄

r = SQLAllocHandle ( SQL_HANDLE_STMT, hConnect, &hStmt);

if ( r != SQL_SUCCESS )

{

cout << "SQLAllocHandle error!" << endl ;

exit(1);

}

// 执行SQL查询(第二个参数即你想执行的SQL语句)

strcpy ( SQLString, "select * from test");

r = SQLExecDirect( hStmt, (SQLCHAR *)SQLString, SQL_NTS);

if ( r != SQL_SUCCESS )

{

cout << "SQLExecDirect error!" << endl ;

exit(1);

}

// 绑定数据并输出

SQLCHAR authorName[20] ;

SQLCHAR bookID[20] ;

SQLINTEGER auName = SQL_NTS;       //函数SQLGetData中会用到

SQLINTEGER bID = SQL_NTS;

while(1)

{

r = SQLFetch(hStmt);   //数据库游标,当对某一行表项操作成功后,游标下移一位

if(r == SQL_ERROR || r == SQL_SUCCESS_WITH_INFO)

{

cout << "SQLFetch error!" << endl ;

exit(1);

}

/*SQLGetData用于检索结果集数据,其中用户可修改的参数为:参数2表示取第几列的数据;参数3表示数据类型SQL_C_X,

X为具体的数据类型,如CHAR、INT等;参数4是存放数据的变量;参数5指向的缓冲区的最大大小,

如果参数4是二进制或字符串,则参数5必须大于0;参数6事先要定义(名字可以参数4相关联),然后其值赋为SQL_NTS

*/

if ( r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO)

{

SQLGetData(hStmt,1,SQL_C_CHAR,authorName,20,&auName);

SQLGetData(hStmt,2,SQL_C_CHAR,bookID,20,&bID);

printf("%s\t%s\n" , bookID , authorName);

}

else

break ;

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值