C API 提供了对 MySQL c/s 模型的底层访问。C API 代码在 mysqlclient 库中实现。可以从该库中引用到的变量及含义:

环境变量 含义
MYSQL_UNIX_PORT 本地连接的套接字文件
MYSQL_TCP_PORT 默认 tcp 端口
MYSQL_PWD 默认密码
MYSQL_DEBUG  
TMPDIR  

  客户端与服务端通讯时,客户端会启用一块内存缓冲空间,起始大小为16KB,随着需求会自动增长,默认最大增长到16MB。适当增大这个默认的最大缓存值,不会造成资源浪费,因为缓存的使用依据需要而自动增加。这个最大值的设定,必须能大于一条单独的查询语句(for client-to-server traffic),且大于服务端返回的一条记录的数据量(for server-to-client traffic)。对于客户端库的最大值限制到1GB,服务端最大缓存为1MB。服务端自动增大的缓存会自动释放,客户端不会,客户端需要在关闭连接后才能释放。

1.构建 C API 程序


  使用 gnu gcc 编译 Linux 下的客户端程序。  指定头文件:-I/usr/local/mysql/include  连接时选项:-L/usr/local/mysql/lib -lmysqlclient

  查看当前机器编译链接时的选项:

[view@file ~]$ /usr/local/mysql/bin/mysql_config --cflags
-I/usr/local/mysql/include -g -DNDEBUG
[view@file ~]$ /mysql/bin/mysql_config --libs
-L/usr/local/mysql/lib -lmysqlclient -lpthread -lm -ldl
# 创建动态链接库(Linux下默认创建动态库)
[view@file ~]$ gcc -o progname progname.o
# 创建静态链接库时,需要指定静态库名
[view@file ~]$ gcc -o progname progname.o /usr/local/mysql/lib/libmysqlclient.a

2.C API 函数


  应用程序交互的步骤:
    ①调用 mysql_library_init() 调用MySQL库
    ②调用 mysql_init() 创建数据库连接,调用 mysql_real_connect() 连接到数据库
    ③发送 SQL 语句(mysql_query()、mysql_real_query())
    ④调用 mysql_close() 终止连接
    ⑤调用 mysql_library_end() 释放库调用

  连接数据库

#include<stdio.h>
#include"mysql.h" int main(void){
MYSQL mysql;
mysql_init(&mysql); // 创建连接,在if语句激活连接
if(NULL != mysql_real_connect(&mysql, "hostname", "username", "password", "dbname", , NULL, )){
printf("连接成功。\n");
}
else{
printf("连接失败!\n");
} mysql_close(&mysql); // 断开数据库连接
return ;
}

MySQL C API(23)的更多相关文章

  1. Mysql学习总结(23)——MySQL统计函数和分组查询

    1.使用count统计条数:select count(字段名...) from tablename; 2.使用avg计算字段的平均值:select avg(字段名) from tablename: 这 ...

  2. Mysql 常用函数(23)- sign 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html sign 的作用 返回参数的符号 sign 的语法 ...

  3. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  4. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  5. Mysql优化系列(2)--通用化操作梳理

    前面有两篇文章详细介绍了mysql优化举措:Mysql优化系列(0)--总结性梳理Mysql优化系列(1)--Innodb引擎下mysql自身配置优化 下面分类罗列下Mysql性能优化的一些技巧,熟练 ...

  6. [转]MySQL Connector/C++(一)

    http://www.cnblogs.com/dvwei/archive/2013/04/18/3029464.html#undefined#undefined MySQL Connector/C++ ...

  7. 微信nickname乱码及mysql编码格式设置(utf8mb4)

    微信nickname乱码及mysql编码格式设置(utf8mb4) 今天在写微信公众平台项目时,写到一个用户管理模块,接口神马的已经调试好了,于是将用户从微信服务器保存到本地数据库,发现报错: jav ...

  8. [转]ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    本文转自:http://www.cnblogs.com/parry/p/ASPNET_MVC_Web_API_digest_authentication.html 在前一篇文章中,主要讨论了使用HTT ...

  9. Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录

    Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...

随机推荐

  1. 干货-递归下降分析器 笔记(具体看Python Cookbook, 3rd edition 的2.19章节)

    import re import collections # 写将要匹配的正则 NUM = r'(?P<NUM>\d+)' PLUS = r'(?P<PLUS>\+)' MIN ...

  2. insert into on duplicate key update

    问题 有一个表,建表语句如下: CREATE TABLE `tbl_host` ( `id` bigint(64) NOT NULL AUTO_INCREMENT, `ip` varchar(255) ...

  3. 顶级域名和二级域名共享cookie及相互删除cookie

    在CSDN看到一个cookie设置domain时,如何删除的问题, 自己也只知道domain设置为顶级域名时可以被其他二级域名共享,但是如何删除还是有一点搞不清楚,所以特意测试了下cookie和dom ...

  4. Mysql 性能优化7【重要】sql语句的优化 浅谈MySQL中优化sql语句查询常用的30种方法(转)

    原文链接   http://www.jb51.net/article/39221.htm 这篇文章大家都在转载,估计写的有条理吧,本人稍微做一下补充 1.对查询进行优化,应尽量避免全表扫描,首先应考虑 ...

  5. LeetCode——12. Integer to Roman

    一.题目链接:https://leetcode.com/problems/integer-to-roman/ 二.题目大意: 给定一个整数,返回它的罗马数字的形式. 三.题解: 要想做出这道题目,首先 ...

  6. C++进阶--RAII 资源获取即初始化

    //############################################################################ /* 资源获取即是初始化 (RAII) * ...

  7. 基于scroll的吸顶效果

    本次要实现的是一种常见的网页效果,如下: 页面由头部,导航,主体内容三部分组成,当页面发生滚动时,头部逐渐隐藏,导航部分向上移动,直到导航部分距离浏览器顶部为零时,导航部分固定不动,保持吸顶效果,如下 ...

  8. 学习笔记之NumPy

    NumPy — NumPy http://www.numpy.org/ NumPy is the fundamental package for scientific computing with P ...

  9. Jmeter(十一)参数化

    有关参数化的概念,前面有篇随笔已经粗略的提到了参数化的一点内容.本篇来主要记录参数化. Jmeter的参数化方式有很多,在此我来一一记录,对待不同个规模.业务模型.数据量来进行记录参数化的方法. 一. ...

  10. linux安装和卸载软件:sudo apt-get install(remove)

    sudo apt-get install xxx sudo apt-get remove xxx