用C语言测试Multiple-Query

阅读 68

2023-06-15


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


精彩评论(0)

0 0 举报