test2_libmysqld.c

来自「C语言调用mysql数据库 环境:linux 解压缩后」· C语言 代码 · 共 115 行

C
115
字号
/* * A simple example client, using the embedded MySQL server library*/#include <mysql.h>#include <stdarg.h>#include <stdio.h>#include <stdlib.h>MYSQL *db_connect(const char *dbname);void db_disconnect(MYSQL *db);void db_do_query(MYSQL *db, const char *query);const char *server_groups[] = {  "test2_libmysqld_SERVER", "embedded", "server", NULL};intmain(int argc, char **argv){  MYSQL *one, *two;  mysql_library_init(argc, argv, (char **)server_groups);  one = db_connect("test");  two = db_connect(NULL);  //db_do_query(one, "SHOW TABLE STATUS");printf("one:\n");  db_do_query(one, "select * from aaa");printf("two:\n");  db_do_query(two, "SHOW DATABASES");  mysql_close(two);  mysql_close(one);  /* This must be called after all other mysql functions */  mysql_library_end();  exit(EXIT_SUCCESS);}static voiddie(MYSQL *db, char *fmt, ...){  va_list ap;  va_start(ap, fmt);  vfprintf(stderr, fmt, ap);  va_end(ap);  (void)putc('\n', stderr);  if (db)    db_disconnect(db);  exit(EXIT_FAILURE);}MYSQL *db_connect(const char *dbname){  MYSQL *db = mysql_init(NULL);  if (!db)    die(db, "mysql_init failed: no memory");  /*   * Notice that the client and server use separate group names.   * This is critical, because the server does not accept the   * client's options, and vice versa.   */  mysql_options(db, MYSQL_READ_DEFAULT_GROUP, "test2_libmysqld_CLIENT");  if (!mysql_real_connect(db, NULL, "root", "shenou", dbname, 0, NULL, 0))    die(db, "mysql_real_connect failed: %s", mysql_error(db));  return db;}voiddb_disconnect(MYSQL *db){  mysql_close(db);}voiddb_do_query(MYSQL *db, const char *query){  if (mysql_query(db, query) != 0)    goto err;  if (mysql_field_count(db) > 0)  {    MYSQL_RES   *res;    MYSQL_ROW    row, end_row;    int num_fields;    if (!(res = mysql_store_result(db)))      goto err;    num_fields = mysql_num_fields(res);    while ((row = mysql_fetch_row(res)))    {      (void)fputs(">> ", stdout);      for (end_row = row + num_fields; row < end_row; ++row)        (void)printf("%s\t", row ? (char*)*row : "NULL");      (void)fputc('\n', stdout);    }    (void)fputc('\n', stdout);    mysql_free_result(res);  }  else    (void)printf("Affected rows: %lld\n", mysql_affected_rows(db));  return;err:  die(db, "db_do_query failed: %s [%s]", mysql_error(db), query);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?