yang131

导航

c++使用mysql connector连接mysql

这次使用c++连接mysql,可以成功连接了,中间找了官方文档(mysql connector里的readme提供的网址  https://dev.mysql.com/doc/connector-cpp/en/以及百度ai提供的设置)

1 ql::ConnectOptionsMap options;
2 options["hostName"] = "localhost";      // 数据库主机地址:ml-citation{ref="8" data="citationList"}
3 options["userName"] = "root";           // 数据库账号:ml-citation{ref="8" data="citationList"}
4 options["password"] = "your_password";  // 数据库密码:ml-citation{ref="7,8" data="citationList"}
5 options["schema"] = "test_db";          // 目标数据库名称:ml-citation{ref="8" data="citationList"}
6 options["port"] = 3306;                 // 端口号(默认3306):ml-citation{ref="8" data="citationList"}

下面是代码:

#include <iostream>
#include <exception>
#include "mysql/jdbc.h"
#pragma comment(lib,"mysqlcppconn.lib")

using namespace sql;
using namespace mysql;
using namespace std;
Connection* conn;
Driver* driver;
sql::Statement* stmt;
int main() {
    MySQL_Driver* d = reinterpret_cast<MySQL_Driver*>(sql_mysql_get_driver_instance());
    std::string host = "tcp://127.0.0.1:3306";
    std::string usr = "root";
    std::string pwd = "1234";
    d->threadInit();
    cout << d->getName().asStdString() << endl;
    try
    {
        ConnectOptionsMap cosMap;
        cosMap["userName"] = "root";
        cosMap["password"] = "1234";
        cosMap["hostName"] = "localhost";
        cosMap["schema"] = "dbtest";
        cosMap["port"] = 3306;
        cosMap[OPT_ENABLE_CLEARTEXT_PLUGIN] = true;
        cosMap[OPT_PLUGIN_DIR] = "./plugin";
        //std::unique_ptr<sql::Connection> con(driver->connect(host, usr, pwd));
        //conn = d->connect("127.0.0.1", "root", "1234");
        conn = d->connect(cosMap);
        cout << "connect" << endl;
        stmt = conn->createStatement();
        stmt->execute("USE " "dbtest");
        stmt->execute("DROP TABLE IF EXISTS test23");
        stmt->execute("CREATE TABLE test23(id INT, label CHAR(1))");
        stmt->execute("INSERT INTO test23(id, label) VALUES (1, 'a')");

        delete stmt;

        conn->close();
    }
    catch (const std::exception& e)
    {
        cout << e.what() << endl;
    }

    return 0;
}

 

posted on 2025-05-08 17:31  NoNight  阅读(215)  评论(0)    收藏  举报