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)--备份方案总结性梳 ...
随机推荐
- C# 装箱
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- python 字符串格式化—format
Python2.6 开始,新增了一种格式化字符串的函数 str.format().使用起来简单方便,不会遇到使用%时候格式的选择问题. 按照参数默认顺序 >>> "yesd ...
- Asp.Net Grieview Eval 绑定数据 调用JS事件
<asp:TemplateField ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp: ...
- C#代码覆盖率实践-vsinstr和OpenCover
C#代码覆盖率实践-vsinstr和OpenCover 标签: C#覆盖率Visual StudioOpenCover测试 2013-06-09 00:57 8149人阅读 评论(8) 收藏 举报 ...
- 代码编辑器之EditPlus
引用及下载地址:http://www.iplaysoft.com/editplus.html EditPlus是一套功能非常强大的文字编辑器,拥有无限制的Undo/Redo(撤销).英文拼字检查.自动 ...
- iwebshop (: Cannot use object of type stdClass as array in)
今天在PHP输出一个二维数组的时候,出现了“Fatal error: Cannot use object of type stdClass as array in……”. 这个二维数组是这样的: Ar ...
- Ubuntu 18.04 rc.local systemd设置
ubuntu18.04不再使用initd管理系统,改用systemd. 然而systemd很难用,改变太大,跟之前的完全不同. 使用systemd设置开机启动为了像以前一样,在/etc/rc.loca ...
- 黄聪:JS正则表达式验证数字
<script type="text/JavaScript"> function validate(){ var reg = new RegExp( ...
- STL基础--流
流 介绍 // cout: 全局ostream对象,(typedef basic_ostream<char> ostream) // <<: ostream& ostr ...
- C++进阶--placement new/delete
//############################################################################ // Placement New 和 Pl ...