My SQL数据库实用技术(33)
6.5 客户机程序4—在运行时获取连接参数
现在我们有了轻易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时答应用户指定一些值。客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译。这十分不方便,非凡是想使程序用于其他人时。在运行时指定连接参数的一个通用的方法是使用命令行选项。MySQL 分发包中的程序接受两种形式的连接参数,如表6 - 1所示。
dedecms.com
织梦内容管理系统
与标准的MySQL 客户机程序一致,客户机程序将接受同样的格式。这很轻易,那是因为客户机库包括了实现选项分析的函数。
除此之外,客户机程序具有从选项文件中抽取信息的能力。这答应将连接参数放在-/. m y. c n f(也就是主目录中的. m y.cnf 文件)中,以便不用在命令行中指定它们。客户机库使检查MySQL 选项文件和从它们中抽取任何相关的值变得非常轻易。只在程序中增加几行代码,就可以使选项文件识别它,并且通过编写自己的代码而不必重新改造这个框架来进行操作。附录E “MySQL 程序参考”中说明了选项文件的语法。
6.5.1 访问选项文件内容
使用load_default() 函数为连接参数值读取选项文件, load_default() 寻找选项文件、分析任何感爱好的可选组的内容,以及重新编写程序的参数向量( a rgv[] 数组),以便把来自于那些组的信息以命令行选项的形式放置在argv[] 的开头。这就是说,在命令行指定出现的选项。因此,当分析命令选项时,就得到了作为常规选项分析循环部分的连接参数。选项加到argv[] 的开头而不是加到末尾,所以,假如连接参数真的在命令行指定,它们要比load_defaults() 增加的任何选项晚一些出现(因而忽略)。面的小程序show _ argv 显示了如何使用load _ defaults ( ),并举例说明了对参数向量如何做出这样的修改:
本文来自织梦
该处理选项文件的代码包括:
■ groups[] 是一个字符串数组,表示所感爱好的选项文件组。对于客户机程序,始终至少指定“client” ([client] 组)。数组的最后一个元素必须是NULL。
■ my_init() 是load_defaults() 所需的执行一些设置操作的初始化例程。
■ load_defaults() 有四个参数:选项文件的前缀(这里应该始终是“ m y”),列出感爱好的可选组的数组、程序参数的数目和向量的地址。不传数目和向量的值,而是传地址,因为load_defaults() 需要改变它们的值。非凡注重的是,虽然a rgv 是一个指针,但还是要传& argv ,它是指针的地址。
show _ argv打印参数两次,第一次是在命令行指定它们的时候,第二次是在load _ defaults( )修改它们的时候。为了查看load_defaults() 的运行效果,应确信在主目录中有一个具有[client] 组指定设置的. my.cnf 文件。假设. my.cnf 文件如下:
内容来自dedecms
内容来自dedecms
有可能会从不在命令行或~ /.my.cnf 文件中的s h o w _ a rgv 所产生的输出结果中看到一些选项。假如是这样,它们或许是在系统范围的选项文件中指定的。在主目录中读取. m y.cnf 之前,load_defaults() 实际上是在MySQL 数据目录中寻找/ e t c / m y.cnf 和m y.cnf 文件(在Windows中, load_defaults() 在
文章评论
共有位Admini5网友发表了评论 查看完整内容