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

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值