mysql Connector C++ 操作數據庫 vs2012


最近想寫一個應用程序,要連接和操作mysql數據庫,以前只是用c++ builder 操作過mysql數據庫,那是用控件操作的,感覺比較弱智,但是c++ builder vcl控件感覺在多線程里比較坑,所以用vs2012做了。

c++連接mysql有兩種方式,1是原始的方法,2是用 Connector c++ 。Connector c++  只是一種封裝,使之更加方便.本方只記下關於 Connector c++ 操作數據庫。

想寫一個demo 測試一下。

mysql connector c++ 調用 方式 有兩種,一種是動態鏈接庫調用 ,一種是靜態庫調用。靜態庫試了一整天不行,都是以 get_mysql_driver_instance() 沒有鏈接到而靠終,后來才知道 新版本的connector c++ 如果以靜態方式調用的話是不再用這個函數了 可是官方文檔中沒有說不用get_mysql_driver_instance這個函數是怎么操作數據庫的。靜態失敗了,搞動態吧。

動態庫調用方式是若干 .h 文件和一個 mysqlcppconn.lib 鏈接之后在運行期間會調用mysqlcppconn.dll貌似運行期間還要調用  libmysql.dll 。

下面說步驟

1.首先把把connector c++ include文件夾 加到工程包含目錄里

2.其次鏈接lib 其中分為debug版和 release 版

#ifdef _DEBUG
#pragma  comment(lib,"..\\dynamic_lib\\Debug_\\mysqlcppconn.lib")
#else
#pragma  comment(lib,"..\\dynamic_lib\\Release_\\mysqlcppconn.lib")
#endif // DEBUG

3.直接調用函數了 ,以下代碼測試正確 vs2012 win7 64位

// TestMySql.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
#include "mysql_connection.h"
#include "mysql_driver.h"
#include "mysql_error.h"


#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>

#include <iostream>
using namespace std;

#ifdef _DEBUG
#pragma  comment(lib,"..\\dynamic_lib\\Debug_\\mysqlcppconn.lib")
#else
#pragma  comment(lib,"..\\dynamic_lib\\Release_\\mysqlcppconn.lib")
#endif // DEBUG




int _tmain(int argc, _TCHAR* argv[])
{
    sql::mysql::MySQL_Driver *driver = NULL;
    sql::Connection *con = NULL;
    driver = sql::mysql::get_mysql_driver_instance();
    if(driver == NULL)
    {
        cout<<"driver is null"<<endl;
        goto END;
    }
    con = driver->connect("tcp://localhost:3306", "root", "3342125");
    if(con == NULL)
    {
        cout<<"conn is null"<<endl;
        goto END;
    }

    cout<<"連接數據庫成功"<<endl;

    sql::Statement * stmt = NULL;
    stmt = con->createStatement();
    if(stmt == NULL)
    {
        cout<<"stmt is null"<<endl;
        goto END;
    }
    stmt->execute("SET CHARSET GB2312");
    stmt->execute("USE zhanbao");
    sql::ResultSet * resultSet =  stmt->executeQuery("這里寫查詢語句  ");
    int i = 0;
    while (resultSet->next()) {
        cout << ", label = '" << resultSet->getString("ACCOUNT") << "'" << endl;
        i++;
    }

    cout<<""<<i<<""<<endl;

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

END:
    system("pause");

    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM