时间: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++测试
标签: