データベースにコネクト

成績データベース(mark) にコネクトして mark_table を表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. コンソールモードで成績データベースにコネクトして、成績表を印字するプログラムを作成します。
  2. 事前に以下の準備を行っておいて下さい。
    1. 成績データベースを作成して下さい。
      詳細は 成績データベースの作成 を参照して下さい。
    2. MySQL のサーバーを立ち上げて下さい。
      詳細は SQL のテスト を参照して下さい。
      クライアントとサーバーが同じマシンの時は、事前に立ち上げなくても接続できるようです。
    3. MySQL のコンパイル環境を整えて下さい。
      詳細は MySQL のコンパイル環境 を参照して下さい。
  3. MySQL のプログラムは、mysql.h をインクルードして libmysql.lib をリンクします。
    szDB はデータベースの名前で、szSQL は発行するクエリです。
    続いて MYSQL で使用する領域が定義されています。
    myData が MYSQL のオブジェクトのポインタです。
    res は SQL 文の実行結果のオブジェクトへのポインタです。
    rowcount には抽出したレコード数を格納します。
    fd はフィールド名を取得する領域です。
    row はレコードのアイテムを取得する領域です。
        /***************************************************/
        /*★ MySQL(mark) の全データを表示する   前田 稔 ★*/
        /***************************************************/
        #include    <windows.h>
        #include    <stdio.h>
        #include    <mysql.h>
        #pragma     comment(lib,"libmysql.lib")
    
        #define     szDB    "mark"                      // 使用するデータベース
        #define     szSQL   "select * from mark_table"  // 発行するクエリー
    
        // MYSQLの定義
        MYSQL       *myData;            // MySQL の Object
        MYSQL_RES   *res;               // クエリーの Object
        int         rowcount;           // Record 件数
        MYSQL_FIELD *fd;                // フィールド名の取得
        MYSQL_ROW   row;                // 各フィールドの領域
        
  4. MySQL を初期化してサーバーに接続します。
    失敗したときは、メッセージを表示して MySQL を閉じます。
        //★ MAIN PROGRAM
        int  main()
        {   int     i;
    
            // MYSQLに接続
            if ((myData=mysql_init((MYSQL*)0))==NULL)
            {   printf( "mysql_init Error\n");
                return 1;
            }
            if (!mysql_real_connect(myData,NULL,NULL,NULL,NULL,MYSQL_PORT,NULL,0))
            {   printf( "Can't connect Error  Port=%d !\n",MYSQL_PORT);
                mysql_close(myData);
                return 2;
            }
        
  5. データベースを選択します。
    失敗したときは、メッセージを表示して MySQL を閉じます。
            // データベースを選択
            if (mysql_select_db(myData,szDB)<0)
            {   printf( "Select Database Error  %s !\n",szDB);
                mysql_close(myData);
                return 3;
            }
        
  6. クエリー(SQL 文)を発行します。
    失敗したときは、メッセージを表示して MySQL を閉じます。
            // SQL文を発行
            if (mysql_query(myData,szSQL))
            {   printf("Query Execute Error  %s !\n",szSQL);
                mysql_close(myData);
                return 4;
            }
        
  7. SQL 文の実行結果のオブジェクトを res に取得します。
    rowcount はそのレコード数です。
            // 結果の取得
            res= mysql_store_result(myData);
            // 行数の取得
            rowcount= (int)mysql_num_rows(res);
        
  8. テーブルを構成するフィールド名を表示します。
            // フィールド名の表示
            printf("-----フィールド名-----\n");
            // 全フィールド名の取得
            for(i=0; fd=mysql_fetch_field(res); i++)
                printf("%d %s \n", i, fd->name);
            putchar('\n');
        
  9. 検索された全データを表示します。
            // 検索結果の表示
            printf("-----検索結果-----\n");
            for(i=0; i<rowcount; i++)
            {   // 検索結果のフェッチ
                row= mysql_fetch_row(res);
                printf("%3s %-20s%4s%4s%4s\n",row[0],row[1],row[2],row[3],row[4]);
            }
            putchar('\n');
        
  10. オブジェクトを閉じて終了します。
            mysql_free_result(res);
            mysql_close(myData);
            getchar();
            return 0;
        }
        

超初心者のプログラム入門(Win32API C++)