MySQL数据库技术(29)

2016-02-19 20:33 1 1 收藏

下面图老师小编要向大家介绍下MySQL数据库技术(29),看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 编程语言 】

  MySQL提供用C编程语言编写的客户机库,可以用它编写访问M y S Q L的客户机程序。这个库定义了应用程序编程接口,包括下面的实用程序:

    ■ 建立和终止与服务器会话的连接管理例程。

    ■ 构造查询的例程,将例程发送到服务器,并处理结果。

    ■ 当其他C API调用失败时,确定错误准确原因的状态和错误报告函数。

    本章介绍如何用客户机库编写自己的程序。我们要记住的一些要点是,自己的程序与MySQL 分发包中已有的客户机程序的一致性,代码的模块性和可重用性。本章假设您知道用C编程的一些知识,但并不一定是专家。本章从简单到复杂粗略地开发了一系列的客户机程序。这个过程是第一部分开发了一个程序框架,该框架除了与服务器连接和断开以外不能作任何事情。这样做的原因是,尽管MySQL 客户机程序是为不同的目的而编写的,但它们都有一个共同点:即创建与服务器的连接。

    我们将用以下步骤来建立这个程序框架:

    1. 编写一些连接和断开的简要代码(客户机程序1)。

    2. 增加一些错误检查(客户机程序2)。

    3. 使连接代码模块化和可重用化(客户机程序3)。

    4. 增加获取运行时连接参数的能力(主机,用户,口令)(客户机程序4)。

    这个框架一般是合理的,可以使用它作为编写任意数量的客户机程序的基础。开发它以后,我们将暂不考虑如何处理各种问题。首先,我们将讨论如何处理特定的硬编码的S Q L语句,然后再开发用于处理任意语句的代码。在这之后,将查询处理的代码增加到客户机程序框架中,开发另一个程序(客户机程序5),它类似于mysql 客户机程序。我们也将考虑(并解决)一些通用的问题,如“如何获取有关表的结构信息?”和“如何在数据库中插入图像?”只有在需要时,本章才讨论客户机库的函数和数据类型。要想了解所有函数和类型的列表,请参阅附录F“C API 参考”。可以用这个附录作为使用客户机库任何部分的进一步的背景信息的参考。

    样例程序可以由联机下载得到,可以直接使用,而不必再键入它们。有关的指导,请参阅附录A“获得和安装软件”。

    在哪里寻找样例

    MySQL 邮件清单的一个共同问题就是“我在哪里可以找到一些用C 写的客户机样例?”。当然,这个答案是“就在本书里!”。但是,许多人好像并没有考虑的是MySQL分发包中包括了若干客户机程序(例如mysql、mysqladmin 和mysqldump),这些大部分都是用C编写的。因为这个分发包可以很容易地以源程序形式使用,所以MySQL 提供非常少的样例客户机代码。因此,如果您还没有这样做,找个时间找到源程序分发包,在客户机目录中查看这些程序。MySQL 客户机程序为共享软件,从那里可以为自己的程序自由地借用代码。

    在本章提供的样例和MySQL 分发包中包括的客户机程序之间,可以找到与自己编写程序时想做的事情相类似的代码。如果是这样,可以通过拷贝和修改已有的程序来重新使用代码。应该阅读本章,了解客户机库是如何工作的。然而,请记住,并不总是需要自己编写琐碎的每件事情(您将注意到,在本章编写程序的讨论中,代码的可重用性是目的之一)。通过使用其他人编好的程序,可以避免许多工作,那是最好的。

    6.1 建立客户机程序的一般过程

    本节介绍使用M y S Q L客户机库编译和连接程序所包括的步骤。不同的系统建立客户机程序的命令也有所不同,可能需要稍微修改一下这里介绍的命令。然而,这里的说明是通用的,应该能够将它用于几乎您编写的任何客户机程序中。

    6.1.1 基本的系统需求

    当您用C 编写MySQL 客户程序时,显然将需要一个C 编译程序。这里说明的样例使用gcc。除了自己的源文件以外,还将需要下列程序:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

    ■ MySQL 头文件。

    ■ MySQL 客户机库。

    MySQL 头文件和客户机库组成客户机编程的支持程序。它们可能已经安装到您的系统上。如果没有,应获取它们。如果MySQL 从源程序分发包或二进制分发包中安装,则客户机可编程的支持程序应该已经作为该处理的一部分安装了。如果MySQL 是从RPM 文件中安装的,则除非安装了开发程序R P M,否则就没有这种支持。如果需要安装MySQL 头文件和库,请参阅附录A。

    6.1.2 编译和连接客户机程序

    要想编译和连接客户机程序,就必须指定MySQL 头文件和客户机库的位置,因为它们通常不安装在编译程序和连接程序缺省搜索的位置。对于下面的样例,假定头文件和客户机库的位置为/usr/local/include/mysql 和/ usr / local / lib / mysql。要想告知编译程序如何寻找MySQL 头文件,则当将源文件编译为目标文件时,传送给它一个-I/usr/local/include/mysql 参数。例如,可以使用这样的命令:

    要想告知连接程序在哪,可以找到客户机库和它的名称,当连接目标文件产生一个可执行的二进制文件时,传送-L/usr/local/lib/mysql 和-lmysqlclient 参数,如下所示:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

    如果客户机程序包括多个文件,则所有目标文件的名称都要列在连接命令上。如果连接步骤导致不能找到必需的floor() 函数的错误,则通过在命令行的后面增加- l m,连接到数学库:

    可能还需要增加其他的库。例如,在Solaris 上可能需要-lsocket -lnsl。

    如果没有使用make 建立程序,则建议您了解一下如何进行,以便不必手工地键入许多建立程序的命令。假设有一个客户机程序myclient,包括两个源文件main.c 和aux.c,及一个头文件myclient.h。一个简单的Makefile 建立这个程序的代码,如下所示:

    如果是一个需要连接到数学库的系统,则更改LIBS 的值,并将-lm 加到最后:LIBS = -L/usr/local/lib/mysql -lmysqlclient -lm如果需要其他的库,如-lsocket 和- l n s l,则也要将这些库加到LIBS 中。使用M a k e f i l e,无论何时修改何源文件,只简单地键入“ m a k e”就可以重新建立程序代码。那比键入一句长的gcc 命令更容易,发生错误更少。

来源:https://www.tulaoshi.com/n/20160219/1623981.html

延伸阅读
3.5 获取数据库和表的有关信息     MySQL 提供了几条获取数据库和表中信息的语句。这些语句对于了解数据库的内容及了解自己表的结构很有帮助。还可以将它们作为使用A LTER TABLE 的一种辅助手段;能够知道当前列是如何定义的,计划出怎样对列进行更改会更为容易。SHOW 语句可用来获取数据库和表的几个方面的信息,它有如下...
3.9 MySQL 不支持的功能     本节介绍其他数据库中有而MySQL 中无的功能。它介绍省略了什么功能,以及在需要这些功能时怎么办。一般情况下, MySQL 之所以忽略某些功能是因为它们有负面性能影响。有的功能正在开发者的计划清单上,一旦找到一种方法可以实现相应的功能而又不致于影响良好性能的目标,就会对它们进行实现。...
3.3 创建、删除和选择数据库     MySQL 提供了三条数据库级的语句,它们分别是: C R E ATE DATABASE 用于创建数据库,DROP DATABASE 用于删除数据库,USE 用于选择缺省数据库。     1. CREATE DATABASE 语句     创建一个数据库很容易;只要在C R E ATE DATABASE 语句中给出其名称即可...
6.5 客户机程序4—在运行时获取连接参数      现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值。客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译。这十分不方便,特别是想...
4.5 调度与锁定问题     前面各段主要将精力集中在使个别的查询更快上。MySQL 还允许影响语句的调度特性,这样会使来自几个客户机的查询更好地协作,从而单个客户机不会被锁定太长的时间。更改调度特性还能保证特定的查询处理得更快。我们先来看一下MySQL 的缺省调度策略,然后来看看为改变这个策略可使用什么样的选项。出...

经验教程

460

收藏

23
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部