ホームページ >データベース >mysql チュートリアル >C++ で mysql データベースに接続してデータを読み取る方法

C++ で mysql データベースに接続してデータを読み取る方法

WBOY
WBOY転載
2023-06-03 09:05:364123ブラウズ

    1. mysql API のヘッダー ファイルをインクルードする必要があります

    ローカルの mysql データベースに接続する必要がある場合は、mysql がデータベースはローカルにインストールされている必要があります。ここでは、データベースへの接続、クエリ ステートメントの実行、その他の操作など、一部の mysql API が使用されています。これらのインターフェイスは、次のヘッダー ファイルに含まれています:

    #include <mysql/mysql.h>

    2. mysql に接続するための具体的な手順

    ここでは、大きく 4 つの主要なステップに分けることができます:

    1. mysql データベースに接続します

    1. mysql データベースに接続します

    明らかに、 mysql データ内のデータを取得するには、まずデータベースに接続し、データベースを操作できるハンドルを取得する必要があります。

    2. クエリ ステートメントを実行します。つまり、必要なデータを選択します。

    は、クエリ ステートメントを実行し、必要なデータをクエリします。クエリされたデータは結果セットと呼ばれる場所に保存されます。

    3. 結果セットから必要なデータを取得する

    関連するインターフェイス関数を使用して、結果セットから各行とローカル フィールドのデータを取得します。

    4. 結果セットから各行の各フィールドの情報を抽出

    5. 結果セットmysqlハンドルを含むリソースを解放

    以下で詳しく説明します使用する必要のあるいくつかの主要なインターフェイス機能。

    2.1 mysql_real_connect

    この関数は、ホスト上で実行されているデータベース エンジンに接続するために使用されます。接続に成功するとデータベースを操作できるハンドルが取得され、失敗した場合は NULL ポインタが取得されます。返されます。

    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
    						)

    この関数には多くのパラメータがあり、各パラメータの意味は次のとおりです:

    • mysql: 既存のMYSQL 構造。 mysql_real_connect() を呼び出す前に、mysql_init() を呼び出して MYSQL 構造を初期化する必要があります。

    • #host: ホスト名または IP アドレスです。 「host」が NULL または文字列「localhost」の場合、接続は localhost への接続として扱われます。

    • #user: ユーザーの MySQL ログイン ID。 「user」が NULL または空の文字列「" の場合、そのユーザーは現在のユーザーとみなされます。

    • passwd: ユーザーのパスワード。 「passwd」が NULL の場合、ユーザーのユーザー テーブル内のエントリ (パスワード フィールドが空のもの) のみが一致するかどうかチェックされます。

    • db: データベース名です。 db が NULL の場合、接続によりデフォルトのデータベースがこの値に設定されます。

    • port: 「port」が 0 でない場合、その値が TCP/IP 接続のポート番号として使用されます。 「ホスト」パラメータによって接続のタイプが決定されることに注意してください。

    • unix_socket: unix_socket が NULL でない場合、この文字列は使用するソケットまたは名前付きパイプを記述します。 「ホスト」パラメータによって接続のタイプが決定されることに注意してください。

    • client_flag: 値は通常 0

    2.2 mysql_query または mysql_real_query

    この関数はused クエリ コマンドをデータベースに送信し、データベースに実行させます。 0 を返すとクエリが成功したことを示し、それ以外の場合は失敗します。

    int mysql_query(MYSQL *mysql, const char *stmt_str)

    Or:

    int
    mysql_real_query(MYSQL *mysql,
                     const char *stmt_str,
                     unsigned long length)
    • mysql: を通じて取得された mysql 操作ハンドルです。

    • stmt_str: 実行する必要があるクエリ ステートメントを示します。

    • #length: クエリ ステートメントの長さです。

    上記 2 つの関数の違いは次のとおりです。

    • mysql_query() はバイナリ ステートメント、つまりパラメータ stmt_str の実行には使用できません。できません 文字に解析されるバイナリ データがあります。

    • mysql_query クエリ速度は、クエリ ステートメントの長さを計算する必要があるため、若干遅くなります。

    2.3 結果セット mysql_store_result

    を取得します。

    関数は、クエリが成功した場合は結果セットを返します。失敗した場合は、NULL を返します。

    MYSQL_RES *mysql_store_result(MYSQL *mysql)

    2.4 結果セット内のデータの各行を表示します。

    次の入力パラメータこの関数は、ステップ (3) で返された結果セットです。呼び出されるたびに、結果セットの次のデータ行が返され、ポインタは 1 行後方に移動します。次のデータ行がない場合は、NULL が返されます。
    mysql_num_fields(result) を使用して結果セット内の行数を計算し、mysql_num_fields(result) を使用して列数を計算できます。 rowが、ある行の情報であれば、row[0]、row[1]となります。 。 。行の各フィールド情報。

    MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

    3. プログラミングの例

    ここでの環境は Linux システムです。使用されるローカル データベース名は CrashCourse、クエリ テーブル名は products です。次のプログラミング例は、products テーブル内の価格が 30 を超えるすべてのアイテムをクエリする方法を示しています。 products テーブルの完全な内容は次のとおりです:

    C++ で mysql データベースに接続してデータを読み取る方法

    #include 
    #include <mysql/mysql.h>
    #include 
    using namespace std;
     
    MYSQL mysql;  //mysql连接
    MYSQL_RES* res; //结果集结构体   
    MYSQL_ROW row; //char** 二维数组,存放记录  
     
    int main()
    {	
    	// 步骤1: 初始化并连接数据库,获得操作数据库的句柄
    	mysql_init(&mysql);    //初始化
    	if (!(mysql_real_connect(&mysql, "localhost", "root", "root", "CrashCourse", 0, NULL, 0))) {
    		cout << "Couldn't connect to Database!\n : " << mysql_error(&mysql);
    		exit(1);
    	}
    	else {
    		printf("Database connection succeeded. Connected...\n\n");
    	}
    	// 步骤2: 执行查询语句,查询需要的数据(设置编码格式也相当于执行特殊的查询语句)
    	mysql_query(&mysql, "set names gbk"); // 设置编码格式
    	mysql_query(&mysql, "SELECT * from products where prod_price > 30");
     
    	// 步骤3:获取结果集
    	res = mysql_store_result(&mysql);
    	// 步骤4:显示结果集中每行数据
        int cols = mysql_num_fields(res); // 计算结果集中,列的个数
    	while (row = mysql_fetch_row(res)) {
        
        	for (int i = 0; i < cols; ++i) {
          		cout << row[i] << "\t";
        	}
        	cout << endl;
    	}
     	// 步骤5:释放结果集合mysql句柄
    	mysql_free_result(res);
    	mysql_close(&mysql);
     return 0;
     
    }

    クエリの結果は次のとおりです:

    C++ で mysql データベースに接続してデータを読み取る方法

    以上がC++ で mysql データベースに接続してデータを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。