C ++のMySQLデータベース接続の実装だけでなく、CRUD

インストールMySQLの下では、データテーブルが前提に構築されました。

あなたは、単にデータやその他の運用データを達成するために追加したい場合は、参照は別のブログかもしれません。
HTTPS:// www.cnblogs.com/ming-4/p/11544514.html

CPPは、データベース管理とヘッダファイルを定義するファイル。

MySQLManager.hファイル:

/*MySQLManager.hファイル:
    ファイル名:MySQLManager.hの
    内容:MySQLのデータベース接続の管理クラスの         
    作成日:2016年10月18日
    作成者:AceTanは
* / 

の#pragmaは一度// ネットワーク通信ヘッダが 
する#include <WINSOCK.H > // 導入MySQLのヘッダファイル(グッド・プラクティスは、フォルダのコピープロジェクトディレクトリである、あなたはまた、VCにディレクトリを設定することができます) 
の#include インクルードは/ mysql.h含める
の#includeを <はWindows.h> //が追加の依存関係を含めますアイテムは、作品であってもよく、 -内部プロパティを設定するの#pragmaコメント(LIB、「WSOCK32.LIBを」)
 の#pragmaコメント(LIB、「libmysql.libを」)// 必要な情報のいくつかのデータベースに接続するための構造体ConnectionInfo 
{ CONST チャー











     ホスト*;             // ホストアドレス
    のconst  のchar *ユーザー;             //は、ユーザー名
    のconst  char型 *パスワード;         // パスワード
    のconst  のchar *データベース;         // データベース名 
    、符号なし整数港;             // ポート番号
    のconst  のchar *のunix_socket;     // UNIX接続識別 
    符号なしロング clientflag;     // クライアント接続フラグ

    // コンストラクタ、いくつかのデフォルト値を設定
    ConnectionInfoを():
        ホスト(127.0.0.1 )、
        ポート(3306 )、
        unix_socketは、(NULL)であり、
        clientflag(0 
    { 

    } 
}; 

クラスmysqlmanager 
{ 
パブリック

    // データベースに接続
    BOOL初期(ConnectionInfo&インフォメーション); 

    // 解除可能な接続
    BOOL FreeConnect(); 

    // データを増加
     // BOOL InsertData(定数するchar * SQL); 

    //は、データ削除
     // BOOL DeleteData(のconst char型*のSQLを); 

    // 更新データ
     // BOOLにupdateData(のconst char型* SQLの場合); 

    // SQL文を実行し、削除、追加を含め、更新データ
    BOOLExecuteSQL(のconst  char型 *のSQL); 

    // クエリデータ 
    A MYSQL_RES QueryDataが(*でのconst  のchar *のSQL); 

    //は、結果セット印刷し
    、ボイド(PrintQueryResを); 

プライベート
    MYSQLベースのm_mysql;                 // MySQLのコネクタ 
    A MYSQL_RES * m_res;             // クエリの結果セット

}。

MySQLManager.cppファイル:

#include <iostreamの> 
する#include <stdio.hの>
 使用して 名前空間STD; 

// 接続されたデータベースの
BOOLの mysqlmanager ::初期(ConnectionInfo&情報)
{ 
    //はMySQLを初期化し、接続のMySQLデータベース 
    にmysql_init(&m_mysql); 

    // 接続に失敗
    する場合((にmysql_real_connect(&!m_mysql、info.host、info.user、info.password、info.database、info.port、info.unix_socket、info.clientflag)))
    { 
        返す falseに; 
    } 

    リターン をtrueに; 
} 

// リリース接続
BOOLのmysqlmanager :: FreeConnect()
{ 
    //リリースリソースを
    mysql_free_result(m_res); 
    にmysql_close( m_mysql); 

    を返す ; 
} 

// SQL文を実行し、更新データ、追加、削除などの
BOOLの mysqlmanager ::は、ExecuteSQL(のconst  char型 *のSQL)
{ 
    IF(するmysql_query(&m_mysql、SQL ))
    { 
        // プレイ・エラー・ログ、ここでは直接コンソールに 
        CERR << SQLステートメントが失敗し、実行、エラーメッセージは次のとおりです。 << mysql_error(&m_mysql)<< てendl;
         返す ; 
    } 
    
    { 
        裁判所未満 << " 実行SQLステートメントの成功! << てendl; 
    } 

    リターン をtrueに; 
} 

// クエリデータ 
MYSQL_RES * mysqlmanager :: QueryData(のconst  char型 *のSQL)
{ 
    IF(するmysql_query(&m_mysql、SQL))
    { 
        // コンソールに直接ここに示されているプレイ・エラー・ログ、 
        << CERR " クエリが失敗し、エラーメッセージは次のとおりです。" << mysql_error(&m_mysql)<< ENDL;
         戻りnullptr; 
    } 
    
    { 
        裁判所未満は << " クエリが正常に実行します! << てendl;

    ストアクエリ結果 
    m_resはmysql_store_result =(&m_mysql)を、

    返すm_resを; 
} 

// 結果セットを横断
空隙mysqlmanagerを:: PrintQueryRes()
{ 
    IF(nullptr A m_res == == NULL || m_res)
    { 
        リターン; 
    } 

    // 行の数を取得します
     // unsigned int型=にmysql_affected_rows行(m_mysql); 

    // フィールド列配列 
    MYSQL_FIELD * =フィールドnullptr;は
     // フィールド名の2次元アレイを保存
    チャーフィールド名が[ 64 ] [ 32 ];   

    // フィールド名を取得
    するためにINT I =0 ; =フィールドのmysql_fetch_field(m_res); ++ I)
    { 
        strcpy_s(フィールド名[I]、フィールド - > 名); 
    } 

    // 列の数を取得
    int型カラム= mysql_num_fields(m_resを)
     するためのint型 I = 0 ;私は<カラム; ++ I)
    { 
        // C言語を使用してフォーマットのprintf、もう少し便利 
        のprintf(" %の10SがTを\ " 、フィールド名[I]); 
    } 
    COUT << ENDL; 

    MYSQL_ROW行; 
    一方(行= は、mysql_fetch_row(m_res ))
    { 
        int型私= 0 ; 私は列を<; ++ I)
        { 
            のprintf(" %の10S \ T " 、行[I])。
        } 
            
        COUT << ENDL。
    } 

}

主な機能:

#include <入出力ストリーム> 
の#include " MySQLManager.h " 

使用 名前空間STD; 

int型のmain()
{ 
    mysqlmanagerのMySQL、
    ConnectionInfo情報; 
    // この構造体、読み取られる構成ファイルから一般プロジェクトConnectionInfoを充填 
    info.user = " ルートを" ; 
    info.password = " your_passwordに" ; 
    info.host = " ローカルホスト" ; 
    info.port = 3306 ; 
    info.database = " テスト" 
    info.unix_socket = NULL; 
    info.clientflag = 0 ; 

    // MySQLの接続
    IF(!mysql.Init(情報))
    { 
        リターン - 1。; 
    } 

    // 増加テストデータ
    のconst  のchar * SQL1 = " NULL(ユーザー値。INSERT INTO、 'エイダ'、 'パスワード')" ; 
    mysql.ExecuteSql(SQL1); 

    // 削除するテストデータ
    のconst  のchar * SQL2 = " ユーザー名= 'AceTan'から削除" ; 
    mysql.ExecuteSql(SQL2); 

    // 変更データテスト
    のconst char * SQL3 = " WHERE名= 'エイダ' 'update_password'更新ユーザーパスワード= SET " ; 
    mysql.ExecuteSql(SQL3); 

    // クエリのテストデータ
    のconst  のchar * sql4 = " ユーザーからのSELECT * " ; 
    mysql.QueryData(sql4 ); 
    mysql.PrintQueryRes(); 

    // 解放資源のMySQL 
    mysql.FreeConnect(); 

    戻り 0 ; 
}

おすすめ

転載: www.cnblogs.com/ming-4/p/11544566.html
おすすめ