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

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

[cpp] view plain copy
  1.   

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

C++连接mysql数据库简单小例子(使用ODBC)点击完成,开始配置数据源

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

连接测试代码:

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

[html] view plain copy
  1. CDatabase m_db;  
  2. bool i = m_db.Open(NULL, FALSE, FALSE, _T("ODBC;DSN=mydata;UID=root;PWD=root"));  
  3. if (i)  
  4. {  
  5.   cout << "连接数据库成功" << endl;  
  6. }

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

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

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

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

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

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

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

下面贴上代码:

[cpp] view plain copy
  1. #include <stdio.h>      
  2. #include <string.h>      
  3. #include <windows.h>      
  4. #include <sql.h>     
  5. #include <sqlext.h>      
  6. #include <sqltypes.h>      
  7. #include <odbcss.h>  
  8. #define MAXBUFLEN 255  
  9. SQLHENV henv = SQL_NULL_HENV;      
  10. SQLHDBC hdbc1 = SQL_NULL_HDBC;      
  11. SQLHSTMT hstmt1 = SQL_NULL_HSTMT;  
  12.   
  13. /*   cpp文件功能说明:  
  14. 1.数据库操作中的添加,修改,删除,主要体现在SQL语句上a  
  15. 2.采用直接执行方式和参数预编译执行方式两种 
  16. */  
  17.   
  18. int main()  
  19. {  
  20. RETCODE retcode;  
  21.   
  22. UCHAR   szDSN[15] = "MYDB"//数据源名称  
  23. UCHAR userID[6] = "sa";//数据库用户ID  
  24. UCHAR passWORD[29] = "wu57862520";//用户密码  
  25.   
  26. //1.连接数据源    
  27. //1.环境句柄     
  28. retcode   =   SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE ,&henv);  
  29. retcode   =   SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);  
  30. //2.连接句柄      
  31. retcode   =   SQLAllocHandle(SQL_HANDLE_DBC,   henv,   &hdbc1);       
  32. retcode   =   SQLConnect(hdbc1,   szDSN,   SQL_NTS,   userID,   SQL_NTS, passWORD,   SQL_NTS);  
  33. //判断连接是否成功     
  34. if   (   (retcode   !=   SQL_SUCCESS)   &&   (retcode   !=   SQL_SUCCESS_WITH_INFO)   )  
  35. {  
  36. printf("连接失败!\n");  
  37. }  
  38. else  
  39. {  
  40. /* 
  41. 1.分配一个语句句柄(statement handle)     
  42. 2.创建SQL语句   
  43. 3.执行语句   
  44. 4.销毁语句   
  45. */   
  46. retcode   =   SQLAllocHandle(SQL_HANDLE_STMT,   hdbc1,   &hstmt1);  
  47. char sql[100] = "insert into test values(22,22)";  
[cpp] view plain copy
  1. /*  
[cpp] view plain copy
  1. 这里需要在数据库中有test表,要事先建好哦。   
  2. 楼主当时就是卡在这里,因为我的默认数据是master,但是我一直操作的是test数据库中的test表,所以一直失败。  
[cpp] view plain copy
  1. 大家一定要注意,如果创建数据源的时候是默认的master数据库,而要操作test数据库中的表,要”use test insert into test//values(2,1)“  
[cpp] view plain copy
  1. */  
  2.   
  3. retcode   = SQLExecDirect(hstmt1,(SQLCHAR *)sql,strlen(sql));  
  4. printf("操作成功!");  
  5. //释放语句句柄   
  6. retcode   = SQLCloseCursor (hstmt1);  
  7. retcode   = SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);   
  8. }  
  9. //3.断开数据库连接  
  10. /*       
  11. 1. 断开数据库连接   
  12. 2.释放连接句柄.   
  13. 3.释放环境句柄(如果不再需要在这个环境中作更多连接)  
  14. */  
  15. SQLDisconnect(hdbc1);       
  16. SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);     
  17. SQLFreeHandle(SQL_HANDLE_ENV, henv);   
  18. return(0);  
  19. }  

这只是一个简单的插入语句,更多操作,我们可以参考ODBC API,这里我就不累述了。