当前位置:Gxlcms > mysql > 在VC2008中使用"MySQLConnector/C++"连接My_MySQL

在VC2008中使用"MySQLConnector/C++"连接My_MySQL

时间:2021-07-01 10:21:17 帮助过:25人阅读

最近参与一个项目,要在VC环境下编程访问数据库。

一般来说,VC下采用微软自身的SQL Server是比较常见的做法。但是我总觉得SQL Server只适合学习,不适合真正应用。再加上像我们这样一个算小也不小,算大也不大的项目来说,网上推荐的总是MySQL。基于这样的考虑,我们就选择了MySQL作为后台数据库。

C++语言本身并没有提供访问数据库的东西。因此一般我们要使用访问数据库的驱动。微软提供过一个ODBC的标准API,用于屏蔽各数据库底层细节,提供统一接口访问各个数据库。在MySQL官网上也能下到一个叫"Connector/ODBC"的driver,但是就在同一个网页上,又看到一个"Connector/C++"的driver,于是我就想,既然能专门针对C++语言提供一个driver,那这个应该比ODBC要效率高些吧。因此我就选择了他。

经过一番探索,终于搞定了数据库访问问题。废话不多说,下面就讲讲如何配置。

--------------------------------------------------------------------------------------------------------------------------

首先在http://www.mysql.com/downloads/上下载"Connector/C++"的driver,注意要下1.0.5版本的(最新的1.1.0版要使用一个神马库,麻烦)。下完后安装(或者免安装版的直接解压),完了之后在安装目录下会生成一个"MySQL Connector C++ 1.0.5"的文件夹,里面有两个子文件夹"include"及"lib",其中lib文件夹下又有一个debug文件夹和opt文件夹。

在VC中新建一个项目,

1.右击项目->属性->配置属性->"C/C++"->常规,在“附加包含目录”中将刚刚所说的"include"及"include/cppconn"的路径包含进来。

2.若在debug下,属性->配置属性->链接器->常规,在“附加库目录”中将刚刚所提的"lib"文件夹下的子文件夹"debug"的路径包含进来。若在release下,则将"opt"的路径包含进来。

3.属性->配置属性->链接器->输入,在“附加依赖项”中添加"mysqlcppconn.lib,mysqlcppconn-static.lib"这两项(这两项其实是"lib"文件夹下的两个lib文件)。

4.将"MySQL Connector C++ 1.0.5/lib/debug"下的"mysqlcppconn.dll"文件复制到windows/system32文件夹下或直接复制到项目所在路径下的debug文件夹下。(release下类似,复制".../lib/opt"下的即可。

5.将"MySQL安装目录/lib/opt"下的"libmysql.dll"文件复制到windows/system32文件夹下。

至此,整个运行环境就算配置好了。现在可以编写一段简单的代码测试一下。提供一段代码如下:

#include #include #include #include #include #include #include 
using namespace sql;
using namespace std;
void RunConnectMySQL()
{
mysql::MySQL_Driver *driver;
Connection *con;
Statement *state;
ResultSet *result;
// 初始化驱动
driver = sql::mysql::get_mysql_driver_instance();
// 建立链接
con = driver->connect("tcp://127.0.0.1:3306", "root", "123");
state = con->createStatement();
state->execute("use test");
// 查询
result = state->executeQuery("select * from testuser where id < 1002");
//
输出查询
while(result->next())
{
int id = result->getInt("ID");
string name = result->getString("name");
cout << id << " : " << name << endl;
}
delete state;
delete con;
}
int main()
{
RunConnectMySQL();
getchar();
return 0;
}

当然,如果想让这段代码正确执行的话,首先得先在数据库里建一张对应的表(此处略去若干字)。

人气教程排行