C语言读写mysql

来源:互联网 发布:威盾软件 编辑:程序博客网 时间:2024/06/03 21:18

创建数据库

CREATE DATABASE tiger;CREATE TABLE `test` (    `id` int(11) NOT NULL auto_increment,    PRIMARY KEY (`id`));ALTER TABLE `test`    ADD COLUMN `name` varchar(20);

C语言读写数据库

/* ============================================================================ Name        : mysqltest.c Author      :  Version     : Copyright   : Your copyright notice Description : Hello World in C, Ansi-style ============================================================================ */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql.h>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

这里写图片描述

原创粉丝点击