MySQL数据库学习手册之MySQL客户工具和API
日期:2007年9月28日 作者: 查看:[大字体 中字体 小字体]-
20 mysql客户工具和API
20.1 MySQL C API
C API代码是随MySQL分发的,它被包含在mysqlclient库且允许C程序存取一个数据库。
在 MySQL源代码分发中的很多客户是用C编写的。如果你正在寻找演示怎样使用C API的例子,看一下这些客户程序。
大多数其他客户 API(除了Java的所有)都使用mysqlclient库与MySQL服务器通信。这意味着,例如,你能利用很多被其他客户程序使用的同一环境变量,因为他们从库中引用。对这些变量的一张表,见12.1 不同的MySQL程序的概述。
客户有一个最大通讯缓冲区大小。初始分配的缓冲区大小(16K字节) 自动地增加到最大尺寸(缺省的最大值是24M)。因为缓冲区大小只是按保证需求而被增加,简单地增加缺省的最大限制并不造成更多被消耗。该尺寸检查主要是一个对错误的查询和通讯包的检查。
通讯缓冲区必须足够大以便一个单独的SQL语句(对客户-服务器传输)和一行返回的数据(对服务器-客户传输)。每个线程的通讯缓冲区被动态扩大到最大限制来处理任何查询或行。例如,如果你包含大到16M数据的BLOB值,你必须有一个至少16M通讯缓冲区限制(在服务器和客户两端)。客户的缺省最大值是24M,但是在服务器端的缺省最大值是1M。你可以在服务器启动时通过改变max_allowed_packet参数的值来改变它。见10.2.3 调节服务器参数。
MySQL服务器在每个查询后缩小每个通讯缓冲区到net_buffer_length个字节。对客户,与一个连接相关的缓冲区的大小没被减少,直到连接被关闭,在此时客户内存被回收。
如果你用线程的编程,你应该用--with-thread-safe-client编译MySQL C API,这将使C API线程对每个连接更安全。你可以让2个线程共享相同的连接,只要如果你做下列事情:
两个线程不能同时在同一个连接上发送查询到MySQL。特别是你必须保证在一个mysql_query()和mysql_store_result()之间没有其他线程正在使用同一个连接。
许多线程能存取用mysql_store_result()检索出来的不同结果集合。
如果你使用mysql_use_result,你必须保证没有其他线程在同一个连接上正在询问任何东西,直到结果集合被关闭。
20.2 C API数据类型
MYSQL
这个结构表示对一个数据库连接的句柄,它被用于几乎所有的MySQL函数。
MYSQL_RES
这个结构代表返回行的一个查询的(SELECT, SHOW, DESCRIBE, EXPLAIN)的结果。从查询返回的信息在本章下文称为结果集合。
MYSQL_ROW
这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。(如果字段值可能包含二进制数据,你不能将这些视为空终止串,因为这样的值可以在内部包含空字节) 行通过调用mysql_fetch_row()获得。
MYSQL_FIELD
这个结构包含字段信息,例如字段名、类型和大小。其成员在下面更详细地描述。你可以通过重复调用mysql_fetch_field()对每一列获得MYSQL_FIELD结构。字段值不是这个结构的部分;他们被包含在一个MYSQL_ROW结构中。
MYSQL_FIELD_OFFSET
这是一个相对一个MySQL字段表的偏移量的类型安全的表示。(由mysql_field_seek()使用。) 偏移量是在一行以内的字段编号,从0开始。
my_ulonglong
该类型用于行编号和mysql_affected_rows()、mysql_num_rows()和mysql_insert_id()。这种类型提供0到1.84e19的一个范围。在一些系统上,试图打印类型my_ulonglong的值将不工作。为了打印出这样的值,将它变换到unsigned long并且使用一个%lu打印格式。例如: - [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] 下一页
-
- MySQL数据库学习手册之MySQL客户工具和API 相关文章:
- ·轻松了解MySQL数据库中的CONVERT()
- ·图片保存到数据库和从数据库读取图片并显示(c#)
- ·数据库连接字符串大全
- ·ASP.NET中数据库的操作初步----增加、删除、修改
- ·UDT协议-基于UDP的可靠数据传输协议
- ·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- ·VS2008的Linq,更新数据就那么费劲?
- ·在Excel中将连续多列相同数据项合并
- ·Excel数据分类汇总满足多种数据整理需求
- ·SQL数据库高级教程:SQL UNION 和 UNION ALL
- MySQL数据库学习手册之MySQL客户工具和API 相关软件
- ·DataExplore数据恢复大师 V2.5
- ·数据结构与算法
- ·股票数据下载专家 V1.03
- ·腾讯QQ IP数据库1025
- ·数据病毒木马暴力杀灭天王 PowerRmv V1.0
- ·网络数据包拦截软件(Visual Sniffer) V1.01
- ·数据恢复--效率源配套工具 V1.0
- ·ACCESS数据库密码破解专家 V2.0
- ·海杰票据打印系统 V3.95 Build 061108
- ·中国专利数据库检索系统软件 V1.0
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:PHP/MySQL教程(5)
下一篇:如何设置 MySql 数据同步
精品推荐
热点TOP10
- ·精妙SQL语句收集
- ·SQLPLUS命令的使用大全
- ·收集的host文件网站黑名单
- ·数据库连接字符串大全
- ·SQL Server 练习题
- ·SQL中CASE的用法
- ·认识VF--Visual FoxPro 漫谈
- ·什么是SQL注入法攻击
- ·一道褒贬不一的SQL考试题
- ·学习SQL语句之SQL语句大全
- ·SQL Server不存在或访问被拒绝 问题的解决
- ·SQL数据库高级教程:SQL UNION 和 UNION ALL
- ·SQLSERVER中,数据库同步的实现
- ·MS-SQL开发常用汇总和t-sql技巧集锦
- ·MySQL管理工具SQLyog最新6.1下载
- ·“SQL Server不存在或访问被拒绝”问题的解决
- ·学习SQL SERVER的存储过程-之一认识存储过程语法
- ·如何删除数据库中的冗余数据(翻译)
- ·数据库物理设计经验谈
- ·MySQL数据库学习手册之MySQL客户工具和API
特别推荐
- ·什么是SQL注入法攻击
- ·用SQL语句删除重复记录的四种方法
- ·数据库查询优化
- ·MySQL常见错误问答!
- ·MySQL从后门进企业市场
- ·精妙SQL语句收集
- ·如何在WinNT/2K/XP下启动纯DOS
- ·自己动手做一个SQL解释器
- ·SQL SERVER实用技巧
- ·动态创建MSSQL数据库表存储过程
- ·数据库的分页问题
- ·DM分区软件使用详解
- ·对ADSL接入方式铜缆可用线对率分析
- ·收集的host文件网站黑名单
- ·修复SQL Server 2000数据库之实战经验
- ·实用的存储过程之一
- ·IIS5 ISAPI Extension Back Door
- ·MySQL中文参考手册7(MySQL存取权限系统)grant设置密码password
- ·Sql server 如何得到汉字的声母
- ·数据库物理设计经验谈
