アットウィキロゴ

MySQL

前提条件

サーバがインストールされている場合

サーバにLibをインストールする

クライアントからの場合

このサイトより「msi」パッケージをインストールしておく

libファイルのMinGW用変更

C:\MinGW\bin>reimp.exe "C:\Program Files\MySQL\MySQL Server 5.1\lib\opt\libmysql.lib"
 
C:\MinGW\bin>
C:\MinGW\bin>dir liblibmysql.a
 
 C:\MinGW\bin のディレクトリ
 
2010/06/24  14:04           113,530 liblibmysql.a
               1 個のファイル             113,530 バイト
 
 
C:\MinGW\bin>
 
※MinGWではライブラリファイルを変換する必要がある
※reimp.exeはユーティリティにしか存在しないのでダウンロードしておく



サンプルソース

  1. #include <stdio.h>
  2. #include <winsock.h>
  3. #include <mysql.h>
  4.  
  5. int main(void){
  6.  
  7. //データベース情報
  8. const char host[] = "localhost"; //接続先
  9. const char user[] = "root"; //ユーザ名
  10. const char password[] = "root123"; //パスワード
  11. const char dbname[] = "testdb1"; //データベース名
  12. const char sql[] = "SELECT * FROM test_tbl1"; //SQL文
  13. const char sql2[] = "SET NAMES CP932;"; //SQL文
  14.  
  15. //MySQL用の構造体
  16. MYSQL* mysql; //接続情報
  17. MYSQL_RES* res; //クエリの返信データ
  18. MYSQL_FIELD* field; //フィールド(カラム)情報
  19. MYSQL_ROW row; //ロウ(レコード)情報
  20.  
  21. //その他の変数宣言
  22. int num_fields; //フィールド数
  23. int num_rows; //ロウ数
  24. int i; //ループカウンタ
  25.  
  26. //mysqlの確保と初期化
  27. mysql = mysql_init(0);
  28.  
  29. //MySQLに接続
  30. if(mysql_real_connect(mysql
  31. , host
  32. , user
  33. , password
  34. , dbname
  35. , MYSQL_PORT
  36. , NULL
  37. , 0) == NULL){
  38. printf("%s\n",mysql_error(mysql));
  39. return -1;
  40. }
  41.  
  42. //SQLの発行
  43. if(mysql_query(mysql,sql2) != 0){
  44. printf("%s\n",mysql_error(mysql));
  45. mysql_close(mysql);
  46. return -1;
  47. }
  48.  
  49. //SQLの発行
  50. if(mysql_query(mysql,sql) != 0){
  51. printf("%s\n",mysql_error(mysql));
  52. mysql_close(mysql);
  53. return -1;
  54. }
  55.  
  56. //MySQLからデータを取得
  57. res = mysql_store_result(mysql);
  58. if(res == NULL){
  59. printf("%s\n",mysql_error(mysql));
  60. mysql_close(mysql);
  61. return -1;
  62. }
  63.  
  64. //ロウ数取得
  65. num_rows = mysql_num_rows(res);
  66. printf("データ件数:%d\n",num_rows);
  67.  
  68. //フィールド数取得
  69. num_fields = mysql_num_fields(res);
  70.  
  71. //フィールド情報取得
  72. field = mysql_fetch_fields(res);
  73.  
  74. //データを読み取って表示
  75. while(row = mysql_fetch_row(res)){
  76. for (i = 0; i < num_fields; i++){
  77. printf("%s=%s/",field[i].name,row[i]);
  78. }
  79. printf("\n");
  80. }
  81.  
  82. //MySQLと切断
  83. mysql_close(mysql);
  84.  
  85. return 0;
  86. }
  87.  
  88.  

コンパイル・実行

C:\MinGW>gcc -I"C:\Program Files\MySQL\MySQL Server 5.1\include" mysql_sample01.c liblibmysql.a -o mysql_sample01.exe
 
C:\MinGW>mysql_sample01.exe
データ件数:6
BK_CD=001/BK_KM=ミズホ/bankinf_mst=みずほ銀行/test_tbl1=1/testdb1=1/
BK_CD=005/BK_KM=ミツビシトウキョウUFJ/bankinf_mst=三菱東京UFJ銀行/test_tbl1=1/testdb1=2/
BK_CD=009/BK_KM=ミツイスミトモ/bankinf_mst=三井住友銀行/test_tbl1=1/testdb1=3/
BK_CD=010/BK_KM=リソナ/bankinf_mst=りそな銀行/test_tbl1=1/testdb1=4/
BK_CD=016/BK_KM=ミズホコーポレート/bankinf_mst=みずほコーポレート銀行/test_tbl1=1/testdb1=5/
BK_CD=017/BK_KM=サイタマリソナ/bankinf_mst=埼玉りそな銀行/test_tbl1=1/testdb1=6/
 
 
C:\MinGW>
 




最終更新:2010年06月24日 15:49