#if defined(_WIN32) || defined(WIN32) || defined(_WIN64)
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include "mysql.h"


static int
my_query(MYSQL *mysql, const char *str)
{
  int rc= mysql_query(mysql, str);
  if (rc)
  {
    printf("Query failed: %s\n", mysql_error(mysql));
    return 1;
  }
  return 0;
}


static int
my_select(MYSQL *mysql, const char *query)
{
  MYSQL_RES *res;
  MYSQL_ROW row;
  if (my_query(mysql, query))
    return 1;

  if (!(res= mysql_use_result(mysql)))
  {
    printf("mysql_store_result() failed\n");
    return 1;
  }
  
  while ((row= mysql_fetch_row(res)) != NULL)
  {
#if 0
    unsigned int i;
    for (i= 0; i < mysql_num_fields(res); i++)
    {
      if (i > 0)
        fputc ('\t', stdout);
      printf ("%s", row[i] != NULL ? row[i] : "NULL");
    }
    fputc ('\n', stdout);
#endif
  }
  mysql_free_result(res);
  return 0;
}


static int
my_selects(MYSQL *mysql, unsigned int count, const char *query)
{
  unsigned int i;
  for (i= 0; i < count; i++)
  {
    if (my_select(mysql, query))
      return 1;
  }
  return 0;
}


int main(int argc, char **argv)
{
  MYSQL mysql,*sock;
  int rc;

  mysql_init(&mysql);
  if (!(sock= mysql_real_connect(&mysql, "localhost", "root", NULL,
                                 "test", 0, "/tmp/mysql.sock", 0)))
  {
    printf("mysql_real_connect failed: %s\n", mysql_error(&mysql));
    return 1;
  }

  rc= my_query(&mysql, "SET NAMES utf8") ||
      my_selects(&mysql, 1024, "SELECT * FROM t1");

  mysql_close(sock);
  return rc;
}
