MySQL数据库技术(29)

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

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

【 tulaoshi.com - 编程语言 】

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

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

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

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

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

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

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

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

    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。除了自己的源文件以外,还将需要下列程序:

    ■ 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 参数,如下所示:

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

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

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

    如果没有使用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 命令更容易,发生错误更少。

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

延伸阅读
6.4 客户机程序3—产生连接代码模块     对于我们的第三个客户机程序,即客户机程序3,通过将它封装到函数do_connect() 和do_disconnect() 中,将使连接和断开代码更加模块化,这样可以很容易地由多个客户机程序使用。这提供一种选择,可将连接代码精确地嵌入到main() 函数中。无论如何,对在应用程序过程中套用老调的任何...
6.7 客户机程序5—交互式查询程序     让我们把迄今为止研究的诸多内容整理一下,编写一个简单的交互式客户机程序。它的功能包括可以进入查询,用通用目标查询处理程序process_query 执行查询,并用前面研究过的显示格式process_result_set() 显示查询结果。     客户机程序5在某些方面与mysql 类似,虽...
    3.6 检索记录     除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是SELECT 语句的用途,即帮助取出数据。SELECT 大概是SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。SELECT 语句的语法如下: &nbs...
6.8 其他主题     本节包括几个主题,这些主题不完全适合于本章从client1 到client5 的开发中的任一小节的内容:     ■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果。     ■ 如何处理很难插入到查询中的数据。     ■ 如何处理图形数...
    关系数据库的世界是一个表与集合、表与集合上的运算占统治地位的世界。数据库是一个表的集合,而表又是行和列的集合。在发布一条SELECT 查询从表中进行检索行时,得到另一个行和列的集合。这些都是一些抽象的概念,对于数据库系统用来操纵表中数据的基本表示没有多少参考价值。另一个抽象概念是,表上的运算都同时进行;查...

经验教程

973

收藏

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