客户机程序1—连接到MYSQL服务器

    6.2 客户机程序1—连接到服务器
    我们的第一个MySQL客户机程序很简单:连接到服务器、断开,并退出。它本身并不是非常有用,但是必须知道如何做它,因为实际上用MySQL数据库做任何事情都必须与服务器连接。这是一个公用的操作,开发创建连接的代码是编写每个客户机程序都将使用的代码。除此之外,这项任务带给我们一些简单开始的事情。以后,我们可以增加这个客户机来做一些更有用的事情。我们第一个客户机程序的源代码突Щ绦?,包括一个单独的文件, client.c:


    这个源文件以包括stdio.h 和mysql.h 开始。MySQL客户机可能包括其他的头文件,但是一般来说至少有两个是最基本的。
    主机名称、用户名称、口令和数据库名称的缺省值固定在代码内部,使事情变得简单。以后,我们将参数化这些值,以便可以在选项文件或命令行中指定它们。程序的main() 函数创建和终止与服务器的连接。建立连接使用如下两个步骤:
    1) 调用mysql_init() 来获取连接处理程序。MYSQL 数据类型是一个包括连接信息的结构。这种类型的变量称为连接处理程序。当我们将NULL 传递给mysql_init() 时,它分配一个MYSQL 变量,初始化它,然后返回一个指向它的指针。
    2) 调用mysql_real_connect() 来创建与服务器的连接。mysql_real_connect() 可有任意数量的参数,例如:
    ■ 连接处理程序的指针。这不能为NULL;它应该是由mysql_init() 返回的值。
    ■ 服务器主机。如果指定NULL 或主机“localhost”,则客户机连接到在本地主机使用UNIX 套接字运行的服务器上。如果指定一个主机名称或主机的IP 地址,则客户机连接到使用TCP/IP 连接命名的主机上。
    在Windows 上,除了使用TCP/IP 连接而不是用UNIX 套接字以外,这种操作是类似的(在Windows NT 上,如果主机为NULL,则在TCP/IP 以前,先试着使用一个指定的管道来连接)。
    ■ 用户名称和口令。如果名称为NULL,则客户机库将逻辑名称发送给服务器。如果口令为NULL,则不发送口令。
    ■ 端口号和套接字文件。这些指定为0 或NULL,来告知客户机库使用它的缺省值。如果不指定端口和套接字,则根据希望连接到的主机确定这些缺省值。附录F 中的mysql_real_connect() 的描述给出有关这些的详细情况。
    ■ 标志值。因为我们不使用任何特定的连接操作,因此它是0。这个参数可用的选项在附录F 中的mysql_real_connect() 的项目中讨论详细情况。要想终止这个连接,可将连接处理程序的指针传递给mysql_ close()。当将连接处理程序传递mysql_close() 来终止个连接时,由mysql_init() 自动分配的连接处理程序自动地释放。
    要想测试客户机程序1,可使用本章前面建立客户机程序时给出的指导来编译和连接,然后运行它:
    % client1    程序连接到服务器、断开并退出。这一点都不令人兴奋,但它是一个开始。然而,它只是一个开始,因为有两个重要的缺点:
    ■ 客户机没有错误检查,所以并不真正地知道实际上它是否在工作!
    ■ 连接参数(主机名称,用户名称等)在源代码内部固定。如果允许用户通过指定选项文件或命令行中的参数来解决这个问题则更好一些。这些问题的处理都不困难。我们将在下面专门解决它们。

时间: 2024-11-05 10:27:53

客户机程序1—连接到MYSQL服务器的相关文章

MYSQL客户机程序4—在运行时获取连接参数

    6.5 客户机程序4-在运行时获取连接参数     现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值.客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译.这十分不方便,特别是想使程序用于其他人时.在运行时指定连接参数的一个通用的方法是使用命令行选项.MySQL分发包中的程序接受两种形式的连接参数,如表6 - 1所示.    与标准的MySQL客户机程序一致,

MYSQL客户机程序2—增加错误检查

    6.3 客户机程序2-增加错误检查    我们的第二个客户机程序将像第一个客户机程序一样,但是将修改它们,考虑错误出现的可能性."将错误检查作为读者的练习"这样的项目在编程文献中相当常见,这或许是因为检查错误相当令人讨厌.但是,我赞同这种观点,即MySQL客户机程序应该测试错误条件并适当地进行回应.由于某种原因,返回状态值的客户机库的调用做这些事情,而且您要承担忽略它们的后果.您最终还是要试图捕获由于没有错误检查而出现在程序中的错误,这些程序的用户会对程序运行如此不规律感到奇怪

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

    MySQL提供用C编程语言编写的客户机库,可以用它编写访问MySQL的客户机程序.这个库定义了应用程序编程接口,包括下面的实用程序:    ■ 建立和终止与服务器会话的连接管理例程.    ■ 构造查询的例程,将例程发送到服务器,并处理结果.    ■ 当其他C API调用失败时,确定错误准确原因的状态和错误报告函数.    本章介绍如何用客户机库编写自己的程序.我们要记住的一些要点是,自己的程序与MySQL分发包中已有的客户机程序的一致性,代码的模块性和可重用性.本章假设您知道用C编程

Mysql入门系列:客户机程序5—MYSQL交互式查询程序

6.7 客户机程序5-交互式查询程序 让我们把迄今为止研究的诸多内容整理一下,编写一个简单的交互式客户机程序.它的功能包括可以进入查询,用通用目标查询处理程序process_query 执行查询,并用前面研究过的显示格式process_result_set() 显示查询结果. 客户机程序5在某些方面与mysql类似,虽然在几个特征上还是有所不同.客户机程序5在输入上有几个约束条件: ■ 每个输入行必须包括一个完整的查询. ■ 查询不会以分号或' g'为终止. ■ 不识别类似quit 的命令:而是

MYSQL客户机程序3—产生连接代码模块

    6.4 客户机程序3-产生连接代码模块    对于我们的第三个客户机程序,即客户机程序3,通过将它封装到函数do_connect() 和do_disconnect() 中,将使连接和断开代码更加模块化,这样可以很容易地由多个客户机程序使用.这提供一种选择,可将连接代码精确地嵌入到main() 函数中.无论如何,对在应用程序过程中套用老调的任何代码都是一个好主意.将它放在可以通过多个程序访问的函数中,而不是在每个程序中都编写一遍.如果修正这个函数中的一个错误或对这个函数作了一些改进,则可只

客户机程序5—MYSQL交互式查询程序

    6.7 客户机程序5-交互式查询程序    让我们把迄今为止研究的诸多内容整理一下,编写一个简单的交互式客户机程序.它的功能包括可以进入查询,用通用目标查询处理程序process_query 执行查询,并用前面研究过的显示格式process_result_set() 显示查询结果.    客户机程序5在某些方面与mysql类似,虽然在几个特征上还是有所不同.客户机程序5在输入上有几个约束条件:    ■ 每个输入行必须包括一个完整的查询.    ■ 查询不会以分号或' \ g'为终止. 

一个简单的服务器和客户机程序

这个例子将以最简单的方式运用套接字对服务器和客户机进行操作.服务器的全部工作就是等候建立一个连接,然后用那个连接产生的Socket创建一个InputStream以及一个OutputStream.在这之后,它从InputStream读入的所有东西都会反馈给OutputStream,直到接收到行中止(END)为止,最后关闭连接. 客户机连接与服务器的连接,然后创建一个OutputStream.文本行通过OutputStream发送.客户机也会创建一个InputStream,用它收听服务器说些什么(本

详解MySQL与客户机的连接

本文通过演示如何使用mysql客户程序与数据库服务器连接.mysql(有时称为"终端监视器 "或只是"监视")是一个交互式程序,允许你连接一个MySQL服务器,运行查询并察看 结果.mysql可以用于批模式:你预先把查询放在一个文件中,然后告诉mysql执行文件的内容.使用 mysql的两个方法都在这里涉及. 为了看清由mysql提供的一个选择项目表了,用--help选项调用它: shell> mysql --help 本章假定mysql已经被安装在你的机器上

mysql服务器的几个调优技巧,让 MySQL 服务器飞速运行

关于 MySQL 调优 有 3 种方法可以加快 MySQL 服务器的运行速度,效率从低到高依次为: 替换有问题的硬件. 对 MySQL 进程的设置进行调优. 对查询进行优化. 替换有问题的硬件通常是我们的第一考虑,主要原因是数据库会占用大量资源.不过这种解决方案也就仅限于此了.实际上,您通常可以让中央处理器(CPU)或磁盘速度加倍,也可以让内存增大 4 到 8 倍. 第二种方法是对 MySQL 服务器(也称为 mysqld) 进行调优.对这个进程进行调优意味着适当地分配内存,并让 mysqld