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)--备份方案总结性梳 ...
随机推荐
- 阿里云学习笔记之Java Web环境搭建
1. 下载JDK7 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521 ...
- NET设计模式 第二部分 结构性模式(9):装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern) ——.NET设计模式系列之十 Terrylee,2006年3月 概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特 ...
- Mongodb主从复制 及 副本集+分片集群梳理
转载努力哥原文,原文连接https://www.cnblogs.com/nulige/p/7613721.html 介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 ...
- Set up an SSH key with Sourcetree on macOS
1. 打开 sourcetree,进入设置-账户: 2. 选择添加账户,托管主机选择 Bitbucket(或Github),再连接账号,登录已有的 Bitbucket 账号(或 Github 账号), ...
- excel技巧--批量生成工资条
要想生成如上图的工资条,快速的方法如下: 1.在工资表右侧建立一升序数字列,完成后再复制该列,重复粘贴一次在该列底部.2.对该表排序:“开始”-->“排序和筛选”-->自定义排序.在对话框 ...
- Delphi代码模拟“显示桌面”的功能
今天有人问我:“用shell打开文件(显示桌面.scf)的方式还是用模拟键盘(Win+D)显示桌面”这应该有更好的方法,就搜了搜,关键字定位“ToggleDesktop”因为显示桌面.scf的内容是: ...
- plsql 创建表空间、用户、赋予权限
plsql 创建表空间.用户.赋予权限 --用户名:testuser --密码:bzhs!*6 --1.创建表空间--用SYSTEM用户登陆数据库,执行下面语句创建表空间CREATE TABLESPA ...
- Java第02次实验提纲(Java基本语法与类库)
1. 熟悉Git 1.1 学会使用网页版的操作代码仓库(gitee) 申请账号,然后根据老师提供的链接或者二维码加入团队,然后修改昵称. fork老师提供的代码库项目,新建自己学号命名的文件并上传一些 ...
- [蓝桥杯]ALGO-8.算法训练_操作格子
题目描述: 问题描述 有n个格子,从左到右放成一排,编号为1-n. 共有m次操作,有3种操作类型: .修改一个格子的权值, .求连续一段格子权值和, .求连续一段格子的最大值. 对于每个2.3操作输出 ...
- rnn实现三位数加法的训练
#!/usr/bin/env python # coding=utf-8 from keras.models import Sequential from keras.layers import Ac ...