ODBC连接MySQL数据库操作实例
来源:互联网 发布:淘宝代运营服务 编辑:程序博客网 时间:2024/06/06 00:05
以下展示的一段程序,完成利用ODBC对MySQL数据库操作功能,我的编译环境时VC6,代码中有详细的解释,如果事先完成ODBC数据源的设置工作,那么只要对代码稍作修改即可使用:
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
#include<Sqltypes.h>
#include<iostream.h>
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;
}
- ODBC连接MySQL数据库操作实例
- ODBC连接数据库实例
- MFC ODBC连接mysql数据库
- MFC ODBC连接mysql数据库
- java ODBC连接MYSQL数据库
- java连接mysql实例及数据库操作
- VC++6.0中用ODBC连接mysql数据库
- VC++6.0中用ODBC连接mysql数据库
- VC++6.0中用ODBC连接mysql数据库
- [MySQL]VC++通过Pipe连接数据库(ODBC)
- vb6通过ODBC连接mysql数据库
- excel通过ODBC连接Mysql数据库
- MySQL ODBC 连接数据库option的含义
- c#通过ODBC数据源连接Mysql数据库
- Qt通过ODBC连接MySQL数据库
- C#中使用Odbc连接Mysql数据库
- C API 通过ODBC 连接数据库MYSQL
- C API 通过ODBC 连接数据库MYSQL
- 软件任务进度安排
- Ubuntu下声音问题 alsamixer
- 浅谈学习方法。。。
- sizeof(++i+ ++i)
- INI文件的使用及示例
- ODBC连接MySQL数据库操作实例
- HOJ 12058 Judges' Time Calculation 解题报告
- MySQL批量导入Excel、txt数据
- super drink
- Debian 国内源
- ZOJ1715 POJ2028 When Can We Meet? 简单的数组题
- 完美的项目(胡扯八道...)
- 关于好软件的一点思考
- MFC窗口各控件的颜色和字体的设置(转)