C++连接mysql数据库简单小例子(使用ODBC)
首先确定你已经安装了mysql数据库,和odbc,即mysql-connector-odbc,如果没有可在https://dev.mysql.com/downloads/connector/odbc/下载,打开控制面板,选择管理工具,根据你的mysql位数选择odbc32还是 odbc64,打开后如图显示:单击添加,
点击完成,开始配置数据源
连接测试代码:
使用数据库会用到CDatabase类 CRecordSet类等,可具体查询用法
- 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字符集。
下面贴上代码:
- #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.数据库操作中的添加,修改,删除,主要体现在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)";
- /*
- 这里需要在数据库中有test表,要事先建好哦。
- 楼主当时就是卡在这里,因为我的默认数据是master,但是我一直操作的是test数据库中的test表,所以一直失败。
- 大家一定要注意,如果创建数据源的时候是默认的master数据库,而要操作test数据库中的表,要”use test insert into test//values(2,1)“
- */
- 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,这里我就不累述了。