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,这里我就不累述了。
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,这里我就不累述了。
相关文章推荐
- C++连接mysql数据库简单小例子(使用ODBC)
- 【09.03.30】Android中使用C++程序读写Parcel的简单例子
- Ireport 连接数据库 javabean 使用参数的简单例子
- ubuntu下c++使用mysqlconnector连接mysql数据库
- 「C#」.NET编程中连接网络MySQL数据库,使用类似SQL Server的库函数,做简单修改即可
- 一个C++连接MYSQL数据库的例子
- 简单的MySQL数据库连接例子
- VC++6.0环境下用ODBC连接SQL Server数据库的简单例子
- Linux下,使用C/C++编写"静态链接库"的一个简单例子
- 使用JDBC-ODBC 方式如何连接MySQL数据库
- Android网络连接----使用URLConnection连接网络简单例子
- [超简单]C++如何使用MySQL数据库
- 一份简单的C++ 使用V8引擎运行Javascript 的例子
- 使用C#链接MYSQL数据库的最简单例子
- 使用ODBC连接数据库[C++]
- 一个实现C/C++连接MYSQL数据库的很好的例子
- C++连接MYSQL数据库(使用MYSQL API方式,环境VS2013+MYSQL5.6)
- 简单使用scipy.weave混合使用Python和C++代码的简单例子
- C#中使用Odbc连接Mysql数据库
- 使用MySQLConnector/C++连接MySQL数据库