VC++ WIN32程序利用ODBC连接MySQL数据库

来源:互联网 发布:淘宝网上购物付款方式 编辑:程序博客网 时间:2024/06/05 02:00

VC++ WIN32程序利用ODBC连接MySQL进行数据库操作

前步骤:在数据源(ODBC)进行数据源配置添加,需要有mysql-connector-odbc驱动(百度搜索下载相应位数版本)。
进行数据库开发需要:

#include <sql.h>    #include <sqlext.h>#include <sqltypes.h>

添加链接库:
odbc32.lib odbccp32.lib

宏定义:

#define LOGIN_TIMEOUT   30#define MAXBUFLEN   255#define CHECKDBSTMTERR0R(hwnd, result, hstmt) if(SQL_ERROR==result){ShowDBStmtError(hwnd,hstmt);return;}

数据库连接错误代码:

void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle){    char pStatus[10], pMsg[101];    SQLSMALLINT SQLmsglen;    char error[200] = {0};    SQLINTEGER SQLerr;    long erg2 = SQLGetDiagRec(type, sqlHandle, 1,        (SQLCHAR *)pStatus,&SQLerr,(SQLCHAR *)pMsg,100,&SQLmsglen);    wsprintf(error,"%s (%d)\n",pMsg,(int)SQLerr);    MessageBox(hwnd, error, TEXT("数据库执行错误"),MB_OK|MB_ICONERROR);}void ShowDBConnError(HWND hwnd,SQLHDBC hdbc){    ShowDBError(hwnd, SQL_HANDLE_DBC, hdbc);}void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt){    ShowDBError(hwnd, SQL_HANDLE_STMT,hstmt);}

连接操作数据库:

void DBTest(HWND hwnd){    SQLHENV henv = NULL;    SQLHDBC hdbc = NULL;    SQLHSTMT hstmt = NULL;    SQLRETURN result;    SQLCHAR ConnStrIn[MAXBUFLEN]="DRIVER={MySQL ODBC 5.3 Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=contacts;CharSet=gbk;";//数据库连接字符串,根据自己的实际情况填    SQLCHAR ConnStrOut[MAXBUFLEN];    //分配环境句柄    result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);    //设置管理环境属性    result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);    //分配连接句柄    result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);    //设置连接属性    result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void *)LOGIN_TIMEOUT, 0);    //连接数据库    result = SQLDriverConnect(hdbc, NULL,                            ConnStrIn, SQL_NTS,                            ConnStrOut, MAXBUFLEN,                            (SQLSMALLINT *)0, SQL_DRIVER_NOPROMPT);    if (SQL_ERROR == result)    {        ShowDBConnError(hwnd, hdbc);        return;    }    //初始化语句句柄    result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);    result = SQLPrepare(hstmt, (SQLCHAR *)"insert into contact(NAME,address) valuse('哈哈', '重庆')",SQL_NTS);//创建SQL操作语句    CHECKDBSTMTERR0R(hwnd, result, hstmt);    result = SQLExecute(hstmt);//执行SQL语句    CHECKDBSTMTERR0R(hwnd, result, hstmt);    SQLFreeStmt(hstmt, SQL_CLOSE);    SQLDisconnect(hdbc);    SQLFreeHandle(SQL_HANDLE_DBC, hdbc);    SQLFreeHandle(SQL_HANDLE_ENV, henv);    MessageBox(hwnd, TEXT("执行成功"),TEXT("标题"),MB_OK);}
0 0
原创粉丝点击