Mysql入门系列:建立MYSQL客户机程序的一般过程

2016-02-19 15:24 0 1 收藏

下面,图老师小编带您去了解一下Mysql入门系列:建立MYSQL客户机程序的一般过程,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

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

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

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

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

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

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

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

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

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

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

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

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

  在哪里寻找样例

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

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

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

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

  6.1.1基本的系统需求

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

  ■ MySQL头文件。

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

  ■ 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。

(本文来源于图老师网站,更多请访问https://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 命令更容易,发生错误更少。

  查看全套"Mysql入门系列教程"

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

延伸阅读
在本书的这部分中,我们将讨论编写自己的访问MySQL数据库的程序所需要知道的内容。MySQL有一组实用程序。例如, mysqldump 导出表的上下文和结构定义, mysqlimport将数据文件加载到表中, mysqladmin 实现管理w操作, mysql可以使用户与服务器交互来执行任意的查询。每个标准的MySQL实用程序都倾向于小巧,重点放在程序可完成特定的、有...
表的故障检测和修正的一般过程如下: ◆ 检查出错的表。如果该表检查通过,则完成任务,否则必须修复出错的数据库表。 ◆ 在开始修复之前对表文件进行拷贝,以保证数据的安全。 ◆ 开始修复数据库表。 ◆ 如果修复失败,从数据库的备份或更新日志中恢复数据。 在使用myisamchk或isamchk检查或修复表之前,应该首先注...
4.6 管理员的优化 前面各段介绍了普通的MySQL用户利用表创建和索引操作,以及利用查询的编写能够进行的优化。不过,还有一些只能由MySQL管理员和系统管理员来完成的优化,这些管理员在MySQL服务器或运行MySQL的机器上具有控制权。有的服务器参数直接适用于查询处理,可将它们打开。而有的硬件配置问题直接影响查询处理速度,应该对它...
3.6 检索记录 除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是SELECT 语句的用途,即帮助取出数据。SELECT 大概是SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。SELECT 语句的语法如下: 除了词 S E L E C T和说明希...
关系数据库的世界是一个表与集合、表与集合上的运算占统治地位的世界。数据库是一个表的集合,而表又是行和列的集合。在发布一条SELECT 查询从表中进行检索行时,得到另一个行和列的集合。这些都是一些抽象的概念,对于数据库系统用来操纵表中数据的基本 表示没有多少参考价值。另一个抽象概念是,表上的运算都同时进行;查询是一种概...

经验教程

309

收藏

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