MySQL見聞録-入門の旅(六)(C++操作MySQL)


ネット上で何度も探して初心者の独学に適した本が見つからないので、授業を買って、急いで授業を終えて、またすべて先生に返したことに気づいた.この一連の文はここに置いて、ソフトウェアをダウンロードしてから、MySQLの入門の旅を記録します.初心者もこの道について行くことができて、1本の道は暗くなります.ファンから見れば、希望者がフックする.何か質問があれば、授業のノートを3編参考にしたり、私を信用したりします.
文書ディレクトリ
  • 1、私の授業ノート
  • C++言語MySQL
  • を使用
  • 2、Linux下のMySQL環境構築
  • 3、ヘッダファイル
  • 4、廬山の正体を初めて見た
  • 5、霧をかき分けて、次の霧
  • を見てください.
  • ①呼び出しmysql_real_接続関数Mysqlデータベースに接続します.
  • ②呼び出しmysql_real_query関数はデータベースクエリーを行います.
  • ③mysqlを呼び出すことでstore_resultまたはmysql_use_result関数が返すMYSQL_RES変数はクエリ結果データを取得する.
  • ④呼び出しmysql_fetch_row関数は結果セットデータを読み出します.
  • ⑤結果セットが切れたらmysql_を呼び出すfree_result関数は、メモリの漏洩を防ぐために結果セットを解放します.
  • ⑥Mysqlデータベースをクエリしなくなった場合mysql_を呼び出すclose関数はデータベース接続を閉じます.
  • 6、例を見て
  • を融通してください.
    1、私の授業ノート
    MySQLデータベース入門から実戦応用まで(学習ノート一)
    MySQLデータベース入門から実戦応用まで(学習ノート2)
    MySQLデータベース入門から実戦応用まで(学習ノート3)
    C++言語MySQLを使用
    私も初心者なので、この整理は雑かもしれませんが、とてもきれいで、入門してから小さなプロジェクトを持って練習すれば慣れます.
    2、Linux下のMySQL環境構築
        (  mysql):
    
    sudo apt-get install mysql-server
    sudo apt-get install mysql-client
    sudo apt-get install libmysqlclient-dev
    sudo apt-get install emma
    

    これはつけられない,度娘はそばにいる.
    3、ヘッダファイル
    //Linux 
    //mysqltest.cpp     :
    
    #include 
    
    //   /usr/include/mysql  mysql.h  
    #include "mysql/mysql.h"
    
    //windows 
    #include  //         winsock2.h
     
    #include 
     
    #pragma comment(lib, “libmysql.lib”)
    

    后のサンプルコードはwindowsの下ですが、よく知ってからLinuxバージョンに変更することをお勧めします.结局、私たちはC++を学んでいますから、Linuxと感情がいいです.
    4、廬山の正体を初めて見る
    /*       MYSQL     */
    MYSQL * mysql;
     
    /*   */
    MYSQL *mysql_init(MYSQL *mysql);
     
    /*      */
    int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg);
     
    /*    */
    MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db,
    unsigned int port, const char *unix_socket, unsigned long client_flag);
     
    /*  SQL  */
    int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length);
    /*  SQL   C     ,          */
    int mysql_query(MYSQL *mysql, const char *query);
     
    /*SQL           ,                SQL  ,   ;  ,              */
    CLIENT_MULTI_STATEMENTS
    /*                    ,  mysql MYSQL   */
    mysql_set_server_option(mysql,MYSQL_OPTION_MULTI_STATEMENTS_ON);
     
    /*                ,           */
    MYSQL_RES *mysql_use_result(MYSQL *mysql);
    MYSQL_RES *mysql_store_result(MYSQL *mysql);
    /*            MYSQL_RES   ,            ,                  */
     
    /*MYSQL_RES               */
    MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
    /*      MYSQL_ROW      char**   ,               */
     
    /*                */
    unsigned int mysql_field_count(MYSQL *mysql);
    unsigned int mysql_num_fields(MYSQL_RES *result);
    /*        */
    my_ulonglong mysql_num_rows(MYSQL_RES *result);
     
    /*              */
    void mysql_free_result(MYSQL_RES *result);
     
    /*     SQL         ,  DELETE INSERT ,              */
    my_ulonglong mysql_affected_rows(MYSQL *mysql);
     
    /*            */
    void mysql_close(MYSQL *mysql);
     
    /*    */
    /*MYSQL        C       ,        ,0    , 0    ,      ,NULL    */
    /*        ,             */
    unsigned int mysql_errno(MYSQL *mysql);//    
    const char *mysql_error(MYSQL *mysql);//      
    

    5、霧をかき分けて、次の霧を見る
    ①mysql_を呼び出すreal_接続関数Mysqlデータベースに接続します.
    mysql_real_connect関数のプロトタイプは次のとおりです.
    MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);
    

    パラメータの説明:
    mysql:前に定義したMYSQL変数;host:MYSQLサーバのアドレス;user:ログインユーザー名;passwd:ログインパスワード;db:接続するデータベース;port:MYSQLサーバーのTCPサービスポート;unix_socket:unix接続方式、NULLの場合socketまたはパイプメカニズムを使用しないことを示す.Clientflag:MysqlはODBCデータベースのタグとして実行され、一般的に0を取ります.
    接続に失敗した場合、関数は0を返します.
    ②mysql_を呼び出すreal_query関数はデータベースクエリーを行います.
    mysql_real_query関数のプロトタイプは次のとおりです.
    int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);
    

    パラメータの説明:
    mysql:前に定義したMYSQL変数;q:SQLクエリ文;length:クエリー文の長さ.
    クエリが成功すると、関数は0を返します.
    ③mysql_を呼び出すstore_resultまたはmysql_use_result関数が返すMYSQL_RES変数はクエリ結果データを取得する.
    2つの関数のプロトタイプは、次のとおりです.
    MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);
     
    MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);
    

    この2つの関数は、クエリーの結果を取得する2つの方法を表します.1つ目はmysql_を呼び出すstore_result関数はMysqlサーバからクエリされたすべてのデータをクライアントに格納し、読み出します.2つ目はmysqlを呼び出すuse_resultは取得を初期化し、後続の行1行の読み取り結果セットを容易にします.それ自体はサーバからデータを読み込んでいません.この方法は、最初の方法よりも速く、必要なメモリが少なくなりますが、サーバをバインドし、他のスレッドがテーブルを更新するのを阻止し、mysql_を繰り返し実行する必要があります.fetch_rowはNULLが戻るまでデータを読み込みます.そうしないと、読み込まれていない行は次のクエリで結果の一部として返されます.だからmysqlをよく使いますstore_result.
    ④mysql_を呼び出すfetch_row関数は結果セットデータを読み出します.
    上記の2つの方式は最後にmysql_を繰り返し呼び出す.fetch_row関数はデータを読み出します.mysql_fetch_row関数のプロトタイプは次のとおりです.
    MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
    

    パラメータの説明:
    resultはmysql_store_resultまたはmysql_use_resultの戻り値.
    この関数はMYSQL_を返します.ROW型の変数、すなわち文字列配列は、rowと仮定すると、row〔i〕はi番目のフィールドの値となる.結果セットの最後になると、この関数はNULLを返します.
    ⑤結果セットが切れたらmysql_を呼び出すfree_result関数は、メモリの漏洩を防ぐために結果セットを解放します.
    mysql_free_result関数のプロトタイプは次のとおりです.
    void STDCALL mysql_free_result(MYSQL_RES *result);
    

    ⑥Mysqlデータベースをクエリしなくなった場合mysql_を呼び出すclose関数はデータベース接続を閉じます.
    void STDCALL mysql_close(MYSQL *sock);
    

    6、例を見て融通をきかす
    例ですが、私が書いたのではなく、私も入門したばかりです.
        #include 
        #include 
     	#include 
     	
        #pragma comment(lib, “libmysql.lib”)
        using namespace std;
    
      int main(){
    
        MYSQL mysql;
     
        MYSQL_RES *res;
     
        MYSQL_ROW row;
     
        //    MYSQL  
     
        mysql_init(&mysql);
     
        //   Mysql   ,           。         “msyql”,    user        ,***     ,              
     
        if (!mysql_real_connect(&mysql, “127.0.0.1”, “user”, “123”, “mysql”, 330600)){
     
        	cout << “mysql_real_connect failure!” << endl;
     
        	return 0;
        }
     
        //   mysql     user 
     
        if (mysql_real_query(&mysql, “select * from user”, (unsigned long)strlen(“select * from user”)))
     
        {
     
        	cout << “mysql_real_query failure!” << endl;
     
        	return 0;
        }
     
        //      
     
        res = mysql_store_result(&mysql);
     
        ifNULL == res)
     
        {
     
        	cout << “mysql_store_result failure!” << endl;
    	 
    	    return 0;
        }
     
        //      ,          ,  row NULL
     
        while (row = mysql_fetch_row(res))
        {
        	cout << row[0<< endl;
        }
     
        //      
     
        mysql_free_result(res);
     
        //   Mysql  
     
        mysql_close(&mysql);
     
        return 0; 
    }
    

    本編も今回の入門の旅の最後の1編で、その後はもっと練習しなければなりません