mysql++のコンパイルとmysql++を使用してmysqlデータベースに接続


1、mysqlをインストールする
mysqlをダウンロードしてインストールします.mysqlをインストールしたことがありますが、アンインストールしました.再インストールすると、mysql構成ツールの最後のステップでは、サービスが起動できません.エラーメッセージは「could not start the service mysql error:0」です.解決策は、インストールディレクトリの残りのファイルを削除し、mysqlサービスを停止し、C:ProgramDataのmysqlのデータファイルを転送または削除することです.再起動して、再インストールすればいいです.
2、mysql++準備知識ここにはいくつかの迷いがあり、mysql公式サイトにはmysql connector/c++のAPIが提供され、広く使われているmysq++もあります.Mysql++の公式サイトにはmysql++の作者が書いたMysql++とmysql connector/c++の比較がありますが、大体以下の通りです:Connector/C++はmysql社が開発した新しいmysql c APIのパッケージライブラリで、それに比べてmysql++の開発の歴史は比較的長いです・・・connector/c++はjava風のAPIで、mysql++はオリジナルのC++標準ライブラリを使用し、JAvaプログラマーはconnector/c++が好きかもしれませんが、最後にmysql++が強く信頼できることを強調しました.
3、ダウンロードインストールmysql++
mysql++をC:/mysql+-3.1にダウンロードして解凍します.0、ダウンロードアドレス:http://tangentsoft.net/mysql++/
4、コンパイルmysql++オープンC:/mysql+-3.1.0の下のMakefile.mingwファイル(拡張子に注意).C:Program FilesMySQLMySQLMySQL Server 5.1すべてを「c:Program FilesMySQLMySQL Server 5.5」に置き換えます.あ、ここで40行目と115行目に改行があり、353行目に置き換えるときに全字一致を選択すると5.1が存在します.つまり、置き換えが終わったら検索して5.1の文字がどこにあるか見てみましょう.もしあれば、正しいパスに変更する必要があります.cmdを実行し、mysqlのインストールディレクトリ「c:Program FilesMySQLMySQLMySQL Server 5.5libopt」;実行:dlltool-k-d C:mysql+++-3.1.0libmysqlclient.def-l libmysqlclient.a;実行に成功すると、C:Program FilesMySQLMySQL Server 5.5liboptフォルダに「libmysqlient.a」ファイルが生成されます.
同様に実行:dlltool-k-d C:mysql+-3.1.0\libmysqlclient.def -l libmysqlclient.lib;実行に成功すると、C:Program FilesMySQLMySQLMySQL Server 5.5liboptフォルダに「libmysqlclient.lib」ファイルが生成されます.
cmdからmysql++-3.1.0で実行:mingw 32-make-f Makefile.mingw;実行後、ディレクトリに多数生成する.o和.odファイル、これは気にしないで、削除することができて、コマンドmingw 32-make-f Makefile.mingw cleanは、コンパイル中に生成された中間ファイルを自動的に消去します.しかし、私はここまでコンパイルして、5回約8時間振り回して、いつも間違いがあります.Googleは長い間答えを見つけていません.mysql++-3.1.かもしれません.0 mysql 5はサポートされていません.5、どの友达が原因を知っているか教えてください.
振り回されたが,やはり成功しなかった.おかしいですね.mysqlバージョンの問題だと疑っています.明日はまた振り回される.
今日はmysql 5.5.5アンインストール、古いバージョンmysql-essential-5.1をインストール58-win 32、nextは順調です.
前回mysql++を振り回す第4歩でlibmysqlclientが生成された.aの場合、以下の手順を追加します.
1)libmysqlclient.a c:mysql+-3.1にコピー0の下2)c:mysql++-3.1.0でmysql++を開きます.bkl、関連経路を置き換えます(このステップは何の役に立つか分かりませんが、ここに記録しておきます).
実行:mingw 32-make-f Makefile.mingw、ここでやっとmysql++のディレクトリで私の必要なmysqlppを生成します.dll(3890 kb)、install.htaファイルをクリックし、ライブラリとincludeファイルを保存するパスを選択し、Eディスクを選択しました.このようにEディスクには新しいフォルダ---mysql++があり、中には2つのフォルダ「include」と「lib」があり、includeフォルダの中にはヘッダファイルがあり、libフォルダにはlibmysqlpp.aとmysqlpp.dllがあり、コードを書いてテストすることができます.
その間、私はcodeblocks 10を使用して、異なるIDEに基づいて関連する構成を行う必要があります.05版では、グローバル環境変数にmysqlとmysqlppを追加した環境変数:1)mysql:base:C:Program FilesMySQLMySQL Server 5.1 include:C:Program FilesMySQLMySQL Server 5.1include lib:C:Program FilesMySQLMySQL Server 5.1include lib
     2)mysqlpp:           base:E:\MySQL++           include:E:\MySQL++\include           lib:E:\MySQL++\lib
 
新しいconsoleを作成します.コードは次のとおりです.
#include <iostream>
#include <string>
#include <cstdlib>

#include <mysql++.h>

using namespace std;

int main()
{
mysqlpp::Connection con(false);

    con.set_option(new mysqlpp::SetCharsetNameOption("gbk"));

    cout << "      (root  )    :";
    string pwd;
    getline(cin, pwd);

    if (!con.connect("mytable", "localhost", "root", pwd.c_str()))
    {
        cout << "    ,         !" << endl;
        return -1;
    }
    else
    {
        cout << "shit.     。" << endl;
        mysqlpp::Query query = con.query("select mycol from firsttable");
        if (mysqlpp::StoreQueryResult res = query.store()) {
            cout << "We have:" << endl;
            mysqlpp::StoreQueryResult::const_iterator it;
            for (it = res.begin(); it != res.end(); ++it) {
                mysqlpp::Row row = *it;
                cout << '\t' << row["mycol"] << endl;
                //        
                //cout << '\t' << row[0] << endl;
            }
        }
        else {
            cerr << "Failed to get mycol list: " << query.error() << endl;
            return 1;
        }
    }

    return 0;
}

コンパイルは順調だったが、実行時にlibMYSQLが欠けていることを示す.dllファイル、このファイルはmysqlのインストールディレクトリ(C:Program FilesMySQLMySQLMySQL Server 5.1bin)にコピーされ、debugやreleaseなどのbuildフォルダにコピーされ、再実行され、OKになりました.
ここでもう一つのテクニックは、win 7では、現在のフォルダにshift+反キーを使用して、ショートカットメニューで「ここでコマンドウィンドウを開く」をクリックすると、cdではなくコマンドウィンドウを開くことができます....はい、便利です.