MySQL C API(23)
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)的更多相关文章
- Mysql学习总结(23)——MySQL统计函数和分组查询
1.使用count统计条数:select count(字段名...) from tablename; 2.使用avg计算字段的平均值:select avg(字段名) from tablename: 这 ...
- Mysql 常用函数(23)- sign 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html sign 的作用 返回参数的符号 sign 的语法 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- Mysql优化系列(2)--通用化操作梳理
前面有两篇文章详细介绍了mysql优化举措:Mysql优化系列(0)--总结性梳理Mysql优化系列(1)--Innodb引擎下mysql自身配置优化 下面分类罗列下Mysql性能优化的一些技巧,熟练 ...
- [转]MySQL Connector/C++(一)
http://www.cnblogs.com/dvwei/archive/2013/04/18/3029464.html#undefined#undefined MySQL Connector/C++ ...
- 微信nickname乱码及mysql编码格式设置(utf8mb4)
微信nickname乱码及mysql编码格式设置(utf8mb4) 今天在写微信公众平台项目时,写到一个用户管理模块,接口神马的已经调试好了,于是将用户从微信服务器保存到本地数据库,发现报错: jav ...
- [转]ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)
本文转自:http://www.cnblogs.com/parry/p/ASPNET_MVC_Web_API_digest_authentication.html 在前一篇文章中,主要讨论了使用HTT ...
- Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录
Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...
随机推荐
- 干货-递归下降分析器 笔记(具体看Python Cookbook, 3rd edition 的2.19章节)
import re import collections # 写将要匹配的正则 NUM = r'(?P<NUM>\d+)' PLUS = r'(?P<PLUS>\+)' MIN ...
- insert into on duplicate key update
问题 有一个表,建表语句如下: CREATE TABLE `tbl_host` ( `id` bigint(64) NOT NULL AUTO_INCREMENT, `ip` varchar(255) ...
- 顶级域名和二级域名共享cookie及相互删除cookie
在CSDN看到一个cookie设置domain时,如何删除的问题, 自己也只知道domain设置为顶级域名时可以被其他二级域名共享,但是如何删除还是有一点搞不清楚,所以特意测试了下cookie和dom ...
- Mysql 性能优化7【重要】sql语句的优化 浅谈MySQL中优化sql语句查询常用的30种方法(转)
原文链接 http://www.jb51.net/article/39221.htm 这篇文章大家都在转载,估计写的有条理吧,本人稍微做一下补充 1.对查询进行优化,应尽量避免全表扫描,首先应考虑 ...
- LeetCode——12. Integer to Roman
一.题目链接:https://leetcode.com/problems/integer-to-roman/ 二.题目大意: 给定一个整数,返回它的罗马数字的形式. 三.题解: 要想做出这道题目,首先 ...
- C++进阶--RAII 资源获取即初始化
//############################################################################ /* 资源获取即是初始化 (RAII) * ...
- 基于scroll的吸顶效果
本次要实现的是一种常见的网页效果,如下: 页面由头部,导航,主体内容三部分组成,当页面发生滚动时,头部逐渐隐藏,导航部分向上移动,直到导航部分距离浏览器顶部为零时,导航部分固定不动,保持吸顶效果,如下 ...
- 学习笔记之NumPy
NumPy — NumPy http://www.numpy.org/ NumPy is the fundamental package for scientific computing with P ...
- Jmeter(十一)参数化
有关参数化的概念,前面有篇随笔已经粗略的提到了参数化的一点内容.本篇来主要记录参数化. Jmeter的参数化方式有很多,在此我来一一记录,对待不同个规模.业务模型.数据量来进行记录参数化的方法. 一. ...
- linux安装和卸载软件:sudo apt-get install(remove)
sudo apt-get install xxx sudo apt-get remove xxx