zoukankan      html  css  js  c++  java
  • [转]Howto: Connect MySQL server using C program API under Linux or UNIX

    原文链接:http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html

    MySQL database does support C program API just like PHP or perl.

    The C API code is distributed with MySQL. It is included in the mysqlclient library and allows C programs to access a database.

    Many of the clients in the MySQL source distribution are written in C. If you are looking for examples that demonstrate how to use the C API, take a look at these clients. You can find these in the clients directory in the MySQL source distribution.

    Requirements

    Make sure you have development environment installed such as gcc, mysql development package etc. Following is the list summarize the list of packages to compile program:

    • mysql: MySQL client programs and shared library
    • mysqlclient: Backlevel MySQL shared libraries (old libs)
    • mysql-devel: Files for development of MySQL applications (a must have)
    • mysql-server: Mysql server itself
    • gcc, make and other development libs: GNU C compiler

    Sample C Program

    Following instructions should work on any Linux distro or UNIX computer. Here is the small program that connects to mysql server and list tables from mysql database.(download link):

    /* Simple C program that connects to MySQL Database server*/
    #include <mysql.h>
    #include <stdio.h>
    main() {
       MYSQL *conn;
       MYSQL_RES *res;
       MYSQL_ROW row;
       char *server = "localhost";
       char *user = "root";
       char *password = "PASSWORD"; /* set me first */
       char *database = "mysql";
       conn = mysql_init(NULL);
       /* Connect to database */
       if (!mysql_real_connect(conn, server,
             user, password, database, 0, NULL, 0)) {
          fprintf(stderr, "%s
    ", mysql_error(conn));
          exit(1);
       }
       /* send SQL query */
       if (mysql_query(conn, "show tables")) {
          fprintf(stderr, "%s
    ", mysql_error(conn));
          exit(1);
       }
       res = mysql_use_result(conn);
       /* output table name */
       printf("MySQL Tables in mysql database:
    ");
       while ((row = mysql_fetch_row(res)) != NULL)
          printf("%s 
    ", row[0]);
       /* close connection */
       mysql_free_result(res);
       mysql_close(conn);
    }
    

    How do I compile and link program against MySQL libs?

    MySQL comes with a special script called mysql_config. It provides you with useful information for compiling your MySQL client and connecting it to MySQL database server. You need to use following two options.
    Pass --libs option - Libraries and options required to link with the MySQL client library.

    $ mysql_config --libs
    Output:

    -L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto

    Pass --cflags option - Compiler flags to find include files and critical compiler flags and defines used when compiling the libmysqlclient library.
    $ mysql_config --cflags
    Output:

    -I/usr/include/mysql -g -pipe -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing

    You need to pass above option to GNU C compiler i.e. gcc. So to compile above program, enter:
    $ gcc -o output-file $(mysql_config --cflags) mysql-c-api.c $(mysql_config --libs)
    Now execute program:
    $ ./output-file
    Output:

    MySQL Tables in mysql database:
    columns_priv
    db
    func
    help_category
    help_keyword
    help_relation
    help_topic
    host
    tables_priv
    time_zone
    time_zone_leap_second
    time_zone_name
    time_zone_transition
    time_zone_transition_type
    user 
  • 相关阅读:
    Android Studio “Project Structure”选项目录结构显示异常
    Android 不通过USB数据线调试的方法
    Android OpenGL ES 开发教程 从入门到精通
    Android NIO(Noblocking I/O非阻塞I/O)小结
    phpStudy3——往数据库中添加数据
    phpStudy2——PHP脚本访问MySql数据库
    phpStudy1——PHP文件获取html提交的参数
    php页面的基本语法
    安装使用phpStudy在本机配置php运行环境
    运行php网站需要安装什么
  • 原文地址:https://www.cnblogs.com/caoyingjie/p/4031203.html
Copyright © 2011-2022 走看看