文档章节

Linux下MySQL C API简单示例

for。
 for。
发布于 2015/12/27 11:21
字数 328
阅读 53
收藏 5
点赞 0
评论 0

1. 创建数据库

drop database testdb;
commit;

create database testdb;
commit;

use testdb;
commit;

create table users(
    username varchar(20) not null,
    password varchar(20) not null
);
commit;

insert into users(username, password) values('0001', '10001');
insert into users(username, password) values('0002', '10002');
insert into users(username, password) values('0003', '10003');
insert into users(username, password) values('0004', '10004');
commit;

2. C代码访问数据库

// mysqlcli.c
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>

int main(int argc, char *argv[])
{
    int i;
    char sqlstr[] = "select * from users";
    char host[] = "127.0.0.1";
    char user[] = "root";
    char passwd[] = "lowkey2046";
    char db[] = "testdb";
    unsigned int port = 3306;
    char *unix_socket = NULL;
    unsigned long clientflag = 0;
    MYSQL mysql;
    MYSQL_RES *result;
    MYSQL_ROW row;

    // 获得或初始化一个MYSQL结构 
    if (mysql_init(&mysql) == NULL) {
        printf("mysql_init error: %s\n", mysql_error(&mysql));
        goto done1;
    }

    // 连接一个MySQL服务器 
    if (mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, clientflag) == NULL){
        printf("mysql_real_connect error: %s\n", mysql_error(&mysql));
        goto done1;
    }

    // 执行指定字符串的SQL查询 
    if (mysql_query(&mysql, sqlstr) != 0) {
        printf("mysql_query error: %s", mysql_error(&mysql));
        goto done2;
    }

    // 生成结果集
    if ((result = mysql_store_result(&mysql))== NULL) {
        printf("mysql_free_result error: %s\n", mysql_error(&mysql));
        goto done2;
    }

    // 从结果集合中取得下一行
    while ((row = mysql_fetch_row(result)) != NULL) {
        // 遍历一行结果
        for (i = 0; i < mysql_num_fields(result); i++) {
            printf("%10s", row[i] != NULL ? row[i] : "NULL");
        }
        printf("\n");
    }

    // 释放结果集
    mysql_free_result(result);
done2:
    // 关闭一个服务器连接
    mysql_close(&mysql);

done1:

    return 0;
}

3. Makefile

CC=gcc
ADDLIB=-lmysqlclient

all:mysqlcli.c
    $(CC) mysqlcli.c -o mysqlcli $(ADDLIB)

clean:
    -rm mysqlcli

4. 执行

$ ./mysqlcli 
      0001     10001
      0002     10002
      0003     10003
      0004     10004


© 著作权归作者所有

共有 人打赏支持
for。

for。

粉丝 80
博文 47
码字总数 18257
作品 0
深圳
程序员
Spring MVC-环境设置(转载实践)

以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvcenvironment_setup.htm 说明:示例基于Spring MVC 4.1.6。 步骤1-安装Java开发工具包(JDK): 您可以从Oracle的Java站...

easonjim ⋅ 2017/08/29 ⋅ 0

Caffeinated 6.828:练习 shell

通过在 shell 中实现多项功能,该作业将使你更加熟悉 Unix 系统调用接口和 shell。你可以在支持 Unix API 的任何操作系统(一台 Linux Athena 机器、装有 Linux 或 Mac OS 的笔记本电脑等)上...

作者: Mit ⋅ 05/06 ⋅ 0

Proxy-Go 全平台 SDK v4.9 来啦!

Proxy-Go 全平台 SDK是proxy使用gombile实现了一份go代码编译为android和ios平台下面可以直接调用的sdk类库, 另外还为linux和windows提供sdk支持,基于这些类库,APP开发者可以轻松的开发出各...

狂奔的蜗牛. ⋅ 06/12 ⋅ 0

Proxy-Go 全平台 SDK 迎来 v4.8 更新!

Proxy-Go 全平台 SDK是proxy使用gombile实现了一份go代码编译为android和ios平台下面可以直接调用的sdk类库, 另外还为linux和windows提供sdk支持,基于这些类库,APP开发者可以轻松的开发出各...

狂奔的蜗牛. ⋅ 05/04 ⋅ 2

MySQL · 特性分析 · MySQL 8.0 资源组 (Resource Groups)

MySQL 8.0已经正式发布。这个版本包含很多有意思的特性,例如,更快、性能更好的Schema和Information Schema、原子DDL、UNDO空间回收等,在很多的网站,博客等上面都有大量的推广介绍。本文将...

db匠 ⋅ 05/22 ⋅ 0

MySQL 5.6.35主从同步配置案例

MySQL 5.6主从同步配置案例分享 本文环境 主库:Redhat 6.5 x64 192.168.1.180 mysql-5.6.35 备库:Redhat 6.5 x64 192.168.1.181 mysql-5.6.35 一、常规配置方式一 1. mysql主服务器配置 增...

xiaocao13140 ⋅ 05/24 ⋅ 0

关于 BPF 和 eBPF 的笔记

本文导航 -什么是 BPF?11% -为什么 BPF 要工作在内核中29% -现状:eBPF48% -kprobes 和 eBPF59% -uprobes 和 eBPF76% -附加 eBPF 程序时应该考虑的事情81% -这个讨论超级棒91% 今天,我喜欢...

作者: Julia Evans ⋅ 05/12 ⋅ 0

mysql数据导入导出方法总结

4、导入命令: mysql -u用户名 -p密码 < 要导入的数据库数据 mysql -uroot -padmin < d:dump.sql (window) mysql -uroot -padmin < /dump.sql (linux) (将备份出来的数据库导入,这里没有写数......

xiaocao13140 ⋅ 05/24 ⋅ 0

你为什么看不懂Linux内核驱动源码?

学习嵌入式Linux驱动开发,最核心的技能就是能够编写Linux内核驱动、深入理解Linux内核。而做到这一步的基础,就是你要看得懂Linux内核源码,了解其基本的框架和具体实现,了解其内核API的使...

宅学部落 ⋅ 04/28 ⋅ 0

Linux上安装二进制文件MySQL详解

Linux上安装二进制文件MySQL详解 前言:昨天晚上搞了很久,终于搞清楚mysql的安装配置了,我真是太low了。当我在云服务器上登进Mysql时,真是高兴哈哈,咱一步一步来,彻底搞懂Mysql的安装配...

xiaocao13140 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux kernel脉络和主干总结

写在前面 前人常说,对Linux操作系统/内核的理解,是计算机行业从业者的内功,决定了你在技术领域想走多远。但内核的庞大以及学习曲线之陡峭,总让我在学习途中觉得犹如“管中窥豹”。 随着工...

Markz0928 ⋅ 27分钟前 ⋅ 0

在gcc中使用intel风格的内联汇编

很简单,内联汇编使用asm(“.intel_syntax noprefix/n”)声明一下,以后的内联汇编就可以用intel风格了,构建可执行文件时给gcc加上-masm=intel参数。 先写一个小程序测试一下: [cpp] view...

simpower ⋅ 37分钟前 ⋅ 0

NIO 之 ByteBuffer实现原理

相关文章 BIO、NIO、AIO 内部原理分析 NIO 之 Selector实现原理 NIO 之 Channel实现原理 前言 Java NIO 主要由下面3部分组成: Buffer Channel Selector 在传统IO中,流是基于字节的方式进行...

轨迹_ ⋅ 46分钟前 ⋅ 0

Jenkins docker权限问题

环境Ubuntu Server 工具 jenkins-war:2.89.2 报错信息 Cannot connect to the Docker daemon. Is the docker daemon running on this host?Build step 'Execute shell' marked build as fai......

Pulsar-V ⋅ 47分钟前 ⋅ 0

180621-一个简单的时间窗口设计与实现

如何设计一个计数的时间窗口 时间窗口,通常对于一些实时信息展示中用得比较多,比如维持一个五分钟的交易明细时间窗口,就需要记录当前时间,到五分钟之前的所有交易明细,而五分钟之前的数...

小灰灰Blog ⋅ 今天 ⋅ 0

Android之Dalvik、ART、JIT、AOT

Android之Dalvik、ART、JIT、AOT 本文内容:Dalvik、ART、JIT、AOT之间关系 本文定位:知识记录 学习过程记录,加深理解,提升文字组合表达能力。也希望能给学习的同学一些灵感 本文整理于[...

lichuangnk ⋅ 今天 ⋅ 0

Thrift RPC实战(五) thrift连接池

Thrift本身没有提供连接池,我们可以用Apache Commons Pool2来实现一个 一、定义对象工厂 BasePooledObjectFactory<T> extends BaseObject implements PooledObjectFactory<T> public class......

lemonLove ⋅ 今天 ⋅ 0

git 命令简写

简写 命令 g git gst git status gd git diff gdc git diff --cached gdv git diff -w "$@" | view - gl git pull gup git pull --rebase gp git push gc git commit -v gc! git commit -v ......

charley158 ⋅ 今天 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧四-类和方法注释模板设置

IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,我不是专业玩博客的,写这篇文章只是为了让大家省事。 这里设置的注释模...

Mkeeper ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部