当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C语言读写mysql

C语言读写mysql

2018年09月14日  | 移动技术网IT编程  | 我要评论

成人动画,华硕x84h网卡驱动,逃出纳粹牢房

创建

create database tiger;

create table `test` (
    `id` int(11) not null auto_increment,

    primary key (`id`)
);

alter table `test`
    add column `name` varchar(20);
/*
 ============================================================================
 name        : mysqltest.c
 author      : 
 version     :
 copyright   : your copyright notice
 description : hello world in c, ansi-style
 ============================================================================
 */

#include 
#include 
#include 

#include 

mysql *g_conn; // mysql 连接
mysql_res *g_res; // mysql 记录集
mysql_row g_row; // 字符串数组,mysql 记录行

#define max_buf_size 1024 // 缓冲区最大字节数

const char *g_host_name = "127.0.0.1";
const char *g_user_name = "root";
const char *g_password = "123456";
const char *g_db_name = "tiger";
const unsigned int g_db_port = 3306;

void print_mysql_error(const char *msg) { // 打印最后一次错误
    if (msg)
        printf("%s: %s\n", msg, mysql_error(g_conn));
    else
        puts(mysql_error(g_conn));
}

int executesql(const char * sql) {
    /*query the database according the sql*/
    if (mysql_real_query(g_conn, sql, strlen(sql))) // 如果失败
        return -1; // 表示失败

    return 0; // 成功执行
}


int init_mysql() { // 初始化连接
    // init the database connection
    g_conn = mysql_init(null);

    /* connect the database */
    if(!mysql_real_connect(g_conn, g_host_name, g_user_name, g_password, g_db_name, g_db_port, null, 0)) // 如果失败
        return -1;

    // 是否连接已经可用
    if (executesql("set names utf8")) // 如果失败
        return -1;

    return 0; // 返回成功
}


int main(void) {
    puts("!!!hello world!!!"); /* prints !!!hello world!!! */

    if (init_mysql());
        print_mysql_error(null);

    char sql[max_buf_size];
    sprintf(sql, "insert into `test`(`name`) values('testname')");

    if (executesql(sql))
        print_mysql_error(null);

    if (executesql("select * from `test`")) // 句末没有分号
        print_mysql_error(null);

    g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集

    int inum_rows = mysql_num_rows(g_res); // 得到记录的行数
    int inum_fields = mysql_num_fields(g_res); // 得到记录的列数

    printf("共%d个记录,每个记录%d字段\n", inum_rows, inum_fields);

    puts("id\tname\n");

    while ((g_row=mysql_fetch_row(g_res))) // 打印结果集
        printf("%s\t%s\n", g_row[0], g_row[1]); // 第一,第二字段

    mysql_free_result(g_res); // 释放结果集

    mysql_close(g_conn); // 关闭链接

    return exit_success;
}

编译

需要安装mysql,并在编译的时候指定mysqlclient头文件,库的目录

gcc -l mysqlclient -i /usr/local/mysql/include/ -l /usr/local/mysql/lib/ mysqltest.c

运行

需要在/usr/lib/目录下创建 /usr/lib/libmysqlclient.so.18 -> /usr/local/mysql/lib/libmysqlclient.so.18 的软链接

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

这里写图片描述

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网