1.下载最新的Connector
https://dev.mysql.com/downloads/connector/cpp/,下载带debug的库。
解压缩到本地,本次使用的是带debug模式的connector库:
注:其中mysqlcppconn与mysqlcppconn8的区别是:
2.在cmakelist中定义寻址头文件的路径与库的路径
#定义头文件需要寻址的路径
include_directories(
D:/Library/mysql-connector-c++-8.2.0-winx64/include/jdbc
)
#定义库文件需要寻址的路径
link_directories(
D:/Library/mysql-connector-c++-8.2.0-winx64/lib64/vs14/debug
)
target_link_libraries(QtDemo2
Qt5::Core
Qt5::Gui
Qt5::Widgets
......
mysqlcppconn
)
3.复制对应的DLL到可执行目录
把D:\Library\mysql-connector-c+±8.2.0-winx64\lib64\debug中的mysqlcppconn-9-vs14.dll复制到项目的可执行目录下。
3.基础使用
https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-connecting.html
#include "sql_connector.h"
#include "string"
#include <QDebug>
#include "mysql_connection.h"
#include "cppconn/driver.h"
#include "cppconn/exception.h"
#include "cppconn/prepared_statement.h"
void SqlConnector::process()
{
qDebug("SqlConnector started....");
std::string server = "tcp://localhost:3306";
std::string username = "root";
std::string password = "Xi1ozh#1";
sql::Driver* driver;
sql::Connection* connection;
try
{
driver = get_driver_instance();
connection = driver->connect(server, username, password);
connection->setSchema("ws300");
}
catch (sql::SQLException e)
{
std::cout << "Could not connect to server. Error message: " << e.what() << "\n";
}
//查询
sql::SQLString sql("select * from users;");
std::unique_ptr<sql::Statement> statment(connection->createStatement());
statment->execute("set names utf8mb4");
std::unique_ptr<sql::ResultSet> result(statment->executeQuery(sql));
while (result->next())
{
auto data = result->getString("password").asStdString();
qDebug("SqlConnector username: %s", data.c_str());
}
result->close();
statment->close();
connection->close();
delete connection;
qDebug("SqlConnector finished....");
}