MySQL: 簡単なサンプル

http://dev.mysql.com/doc/refman/4.1/ja/c.html
MySQL/Rubyのバグ?を追うために少し調査。

#include <windows.h>

#include <stdio.h>
#include <stdlib.h>

#include <mysql.h>

#define MY_HOST   "127.0.0.1"
#define MY_USER   "root"
#define MY_PASSWD NULL
#define MY_DB     "foo"

int main() {
  MYSQL *my;
  MYSQL_RES *res;
  char *errmsg = NULL;

  if ((my = mysql_init((MYSQL *) NULL)) == NULL) {
    errmsg = "mysql_init()";
    goto end;
  }

  if (mysql_real_connect(my, MY_HOST, MY_USER, MY_PASSWD, NULL, MYSQL_PORT, NULL, 0) == NULL) {
    errmsg = "mysql_real_connect()";
    goto end;
  }

  if (mysql_select_db(my, MY_DB) != 0) {
    errmsg = "mysql_select_db()";
    goto end;
  }

  if (mysql_query(my, "select * from bar") != 0) {
    errmsg = "mysql_query()";
    goto end;
  }

  if (res = mysql_store_result(my)) {
    MYSQL_FIELD *fd;
    MYSQL_ROW row;
    int i;

    printf("rows=%d\n", mysql_num_rows(res));

    for (i = 0 ; fd = mysql_fetch_field(res); i++) {
      printf("%d:%s, ", i, fd->name);
    }

    puts("\n----");

    while (row = mysql_fetch_row(res)) {
      int num_fields = mysql_num_fields(res);

      for (i = 0; i < num_fields ; i++) {
        printf("%s, ", row[i] ? row[i] : "NULL");
      }

      puts("");
    }

    mysql_free_result(res) ;
  }

end:
  if (my) {
    mysql_close(my);
  }

  if (errmsg) {
    fprintf(stderr, errmsg);
    exit(1);
  }

  return 0;
}


rows=3
0:id, 1:val, 2:num,

      • -

1, AAA, 111,
2, BBB, 222,
3, CCC, 333,
続行するには何かキーを押してください . . .

windows.hは必須かぁ。
型って自前で変換なのかな?