用C语言测试Multiple-Query

raywill:~ raywill$ cat test.c
#include <stdio.h>
#include <mysql.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
  MYSQL *mysql,*sock;
  MYSQL_ROW row;
  MYSQL_RES *result;

  mysql = mysql_init(NULL);
  int port = 9519;
  char *host = "1.1.44.44";
  char *user = "root";
  char *pass = "";
  char *db = "dbme";
  if (!(sock = mysql_real_connect(mysql, host, user, pass, db, port, NULL, CLIENT_MULTI_STATEMENTS))) {
    //if (!(sock = mysql_real_connect(mysql, host, user, pass, db, port, NULL, 0))) {
    fprintf(stderr, "Couldn't connect to engine!\n%s\n\n", mysql_error(mysql));
    perror("");
    exit(1);
  }

  int i = 0;
  char *sql[3] = {
    "delete from t; insert into t values (1); select * from t; select * from t; select * from t;",
    "select 1;select from sdfsdf ;select 3, '^^^^^^^^^^^^^';",
    "create table if not exists t(i int primary key comment 'xiaochuxxx'); delete from t where i > 0; insert into t values(3); insert into t values (2);"
  };

  for (i = 0; i < 3; ++i) {
    mysql_query(sock, sql[i]);
    do
    {
      printf("sql: %s\n", sql[i]);
      printf("total affected rows: %lld\n", mysql_affected_rows(sock));
      result= mysql_store_result(sock);
      if (!result)
      {
        if(mysql_field_count(sock) == 0) {
          // query does not return data
          // (it was not a SELECT)
          int num_rows = mysql_affected_rows(sock);
          printf("Affected row %d\n", num_rows);
        } else {
          printf("Got fatal error processing query. %s\n", mysql_error(sock));
          exit(1);
        }
      } else {
        row = mysql_fetch_row(result);
        printf("row value: %s\n", row[0]);
        mysql_free_result(result);
      }

    } while (!mysql_next_result(sock));
    printf("no more result\n\n");

  }
  return 0;
}

编译方法:

raywill:~ raywill$ mysql_config --cflags --libs
-I/usr/local/include
-L/usr/local/lib  -lmysqlclient
raywill:~ raywill$ gcc test.c  -o testbin `mysql_config --cflags --libs`
raywill:~ raywill$ ./testbin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值