您的位置:首页 > 编程语言 > C语言/C++

C++连接mysql数据库简单小例子(使用ODBC)

2017-12-25 11:06 1096 查看
首先确定你已经安装了mysql数据库,和odbc,即mysql-connector-odbc,如果没有可在https://dev.mysql.com/downloads/connector/odbc/下载,打开控制面板,选择管理工具,根据你的mysql位数选择odbc32还是
odbc64,打开后如图显示:单击添加,

[cpp] view
plain copy

  




点击完成,开始配置数据源



连接测试代码:

使用数据库会用到CDatabase类 CRecordSet类等,可具体查询用法

[html] view
plain copy

CDatabase m_db;  

bool i = m_db.Open(NULL, FALSE, FALSE, _T("ODBC;DSN=mydata;UID=root;PWD=root"));  

if (i)  

{  

  cout << "连接数据库成功" << endl;  

}

C/C++程序操作数据库。

终于到了最后一步了,不过楼主在这边也卡了很久(网上很多程序都不全,而且也米什么解释,蛋疼)。

在VS2010中创建Win32控制台应用程序项目,在里面新建一个.cpp文件(就是正常的写代码流程)。然后需要注意的是,我们要将文件的项目属性---》常规---》字符集改成是未设置,默认应该是使用Unicode字符集。









下面贴上代码:

[cpp] view
plain copy

#include <stdio.h>      

#include <string.h>      

#include <windows.h>      

#include <sql.h>     

#include <sqlext.h>      

#include <sqltypes.h>      

#include <odbcss.h>  

#define MAXBUFLEN 255  

SQLHENV henv = SQL_NULL_HENV;      

SQLHDBC hdbc1 = SQL_NULL_HDBC;      

SQLHSTMT hstmt1 = SQL_NULL_HSTMT;  

  

/*   cpp文件功能说明:  

1.数据库操作中
13442
的添加,修改,删除,主要体现在SQL语句上a  

2.采用直接执行方式和参数预编译执行方式两种 

*/  

  

int main()  

{  

RETCODE retcode;  

  

UCHAR   szDSN[15] = "MYDB"; //数据源名称  

UCHAR userID[6] = "sa";//数据库用户ID  

UCHAR passWORD[29] = "wu57862520";//用户密码  

  

//1.连接数据源    

//1.环境句柄     

retcode   =   SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE ,&henv);  

retcode   =   SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);  

//2.连接句柄      

retcode   =   SQLAllocHandle(SQL_HANDLE_DBC,   henv,   &hdbc1);       

retcode   =   SQLConnect(hdbc1,   szDSN,   SQL_NTS,   userID,   SQL_NTS, passWORD,   SQL_NTS);  

//判断连接是否成功     

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

{  

printf("连接失败!\n");  

}  

else  

{  

/* 

1.分配一个语句句柄(statement handle)     

2.创建SQL语句   

3.执行语句   

4.销毁语句   

*/   

retcode   =   SQLAllocHandle(SQL_HANDLE_STMT,   hdbc1,   &hstmt1);  

char sql[100] = "insert into test values(22,22)";  

[cpp] view
plain copy

/*  

[cpp] view
plain copy

这里需要在数据库中有test表,要事先建好哦。   

楼主当时就是卡在这里,因为我的默认数据是master,但是我一直操作的是test数据库中的test表,所以一直失败。  

[cpp] view
plain copy

大家一定要注意,如果创建数据源的时候是默认的master数据库,而要操作test数据库中的表,要”use test insert into test//values(2,1)“  

[cpp] view
plain copy

*/  

  

retcode   = SQLExecDirect(hstmt1,(SQLCHAR *)sql,strlen(sql));  

printf("操作成功!");  

//释放语句句柄   

retcode   = SQLCloseCursor (hstmt1);  

retcode   = SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);   

}  

//3.断开数据库连接  

/*       

1. 断开数据库连接   

2.释放连接句柄.   

3.释放环境句柄(如果不再需要在这个环境中作更多连接)  

*/  

SQLDisconnect(hdbc1);       

SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);     

SQLFreeHandle(SQL_HANDLE_ENV, henv);   

return(0);  

}  

这只是一个简单的插入语句,更多操作,我们可以参考ODBC API,这里我就不累述了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: