当前位置:Gxlcms > 数据库问题 > mysql connector c++测试

mysql connector c++测试

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

可以用connector c++操作mysql。

1. 从官网下载对应的connector c++版本。

http://dev.mysql.com/downloads/connector/cpp/

我这里选择的是

技术分享

64位的noinstall版本。

复制解压后的文件夹到相应的工程下。(方便移植,拷到别人电脑上的时候,不需要别人下载配置路径什么的。)


2. 包含相对路径。

使用变量ProjectDir。该路径表示项目文件所在路径。“..\”表示上一层目录。

技术分享


3. 链接库配置。

代码中加入:#pragma  comment(lib,"mysqlcppconn.lib") 动态链接。(ps:connector lib下还有一个mysqlcppconn-static.lib 是静态链接库,网上说不太稳定)

connector lib中的mysqlcppconn.dll拷到工程源目录下。

同时:mysql lib中的libmysql.dll也拷到了工程源目录下, 运行时要用到。

(.lib和.dll的区别与联系见 http://blog.csdn.net/u012420309/article/details/51363101)


4. 修改端口号(不修改是默认的)。

打开mysql的配置文件my-default.ini,将#port = ... 修改为port=3306。(也就是去掉注释赋值)

配置文件修改后,要重启mysql。重启简单方法见上一篇博客。


代码:

#include "mysql_connection.h"
#include "mysql_driver.h"
#include <cppconn/statement.h>


#include <iostream>
#include "string"
using namespace std;

#pragma  comment(lib,"mysqlcppconn.lib")

int main()
{
    sql::mysql::MySQL_Driver *driver = NULL;

    sql::Connection *con = NULL;

	//初始化驱动
    driver = sql::mysql::get_mysql_driver_instance();
    
	//建立链接
    con = driver->connect("tcp://localhost:3306", "root", "zq");
    sql::Statement * stmt = con->createStatement();
    stmt->execute("use test");   

	//查询
    sql::ResultSet * result = stmt->executeQuery("select * from testuser");
    while (result->next()) {
		int id = result->getInt(1); //也可以result->getInt("id");
		string name = result->getString(2).c_str(); //注意这里要转换c_str()
        cout << id << ":" << name << endl;
    }

    con->close();
    delete stmt;
    delete con;

    return 0;
}

运行结果:

1001:google 

1002:kingsoft


PS:这里用到的数据库test和表testuser是上一篇博客里命令行生成的。具体长相:

+------+----------+
| id   | name     |
+------+----------+
| 1001 | google   |
| 1002 | kingsoft |
+------+----------+

当然,也可以通过c++生成。

stmt->execute("create database test");
stmt->execute("use test");
stmt->execute("create table testuser(id INT, name CHAR(20))");

//插入
string strsql = "insert into testuser(id,name)values(1001,'google')";

for (int i = 0; i < 10; i++)
{
    stmt->execute(strsql.c_str());
}
其实就是执行命令行操作。


PPS: mysql_connection.h里包含了

#include <boost/shared_ptr.hpp>
#include <boost/scoped_ptr.hpp>

可以把boost放到mysql-connector的include目录下。也可以在工程的包含目录中添加boost的路径。

mysql connector c++测试

标签:

人气教程排行