MySQL函数描述、学习总结
(适用版本:MySQL 3.23.7alpla)
1. MySQL API 2
1.1. MySQL C API 2
1.2. C API数据类型 3
1.3. C API函数概述 6
1.4. C API函数描述 9
1.4.1. mysql_affected_rows() 10
1.4.2. mysql_close() 11
1.4.3. mysql_connect() 11
1.4.4. mysql_change_user() 12
1.4.5. mysql_create_db() 13
1.4.6. mysql_data_seek() 14
1.4.7. mysql_debug() 15
1.4.8. mysql_drop_db() 15
1.4.9. mysql_dump_debug_info() 16
1.4.10. mysql_eof() 17
1.4.11. mysql_errno() 18
1.4.12. mysql_error() 19
1.4.13. mysql_escape_string() 20
1.4.14. mysql_fetch_field() 21
1.4.15. mysql_fetch_fields() 22
mysql 字符串转数组1.4.16. mysql_fetch_field_direct() 23
1.4.17. mysql_fetch_lengths() 23
1.4.18. mysql_fetch_row() 24
1.4.19. mysql_field_count() 26
1.4.20. mysql_field_seek() 27
1.4.21. mysql_field_tell() 28
1.4.22. mysql_free_result() 28
1.4.23. mysql_get_client_info() 29
1.4.24. mysql_get_host_info() 29
1.4.25. mysql_get_proto_info() 30
1.4.26. mysql_get_server_info() 30
1.4.27. mysql_info() 30
1.4.28. mysql_init() 31
1.4.29. mysql_insert_id() 32
1.4.30. mysql_kill() 32
1.4.31. mysql_list_dbs() 33
1.4.32. mysql_list_fields() 34
1.4.33. mysql_list_processes() 35
1.4.34. mysql_list_tables() 35
1.4.35. mysql_num_fields() 36
1.4.36. mysql_num_rows() 38
1.4.37. mysql_options() 38
1.4.38. mysql_ping() 40
1.4.39. mysql_query() 41
1.4.40. mysql_real_connect() 41
1.4.41. mysql_real_query() 43
1.4.42. mysql_reload() 44
1.4.43. mysql_row_seek() 45
1.4.44. mysql_row_tell() 45
1.4.45. mysql_select_db() 46
1.4.46. mysql_shutdown() 47
1.4.47. mysql_stat() 47
1.4.48. mysql_store_result() 48
1.4.49. mysql_thread_id() 49
1.4.50. mysql_use_result() 50
1.4.51. 为什么在mysql_query()返回成功后,mysql_store_result()有时返回NULL? 51
1.4.52. 我能从查询中得到什么结果? 51
1.4.53. 我怎样能得到最后插入的行的唯一ID? 52
1. MySQL API
1.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,你必须保证没有其他线程在同一个连接上正在询问任何东西,直到结果集合被关闭。
1.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打印格式。例如:
printf (Number of rows: %lu\n", (unsigned long) mysql_num_rows(result));
MYSQL_FIELD结构包含列在下面的成员:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论