广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Mysql入门系列:MYSQL客户机程序4—在运行时获取连接参数

    2018-04-25 21:46:01 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布

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

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

      

      与标准的MySQL客户机程序一致,客户机程序将接受同样的格式。这很容易,那是因为客户机库包括了实现选项分析的函数。

      除此之外,客户机程序具有从选项文件中抽取信息的能力。这允许将连接参数放在-/.my. c n f(也就是主目录中的.my.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() 有四个参数:选项文件的前缀(这里应该始终是“ my”),列出感兴趣的可选组的数组、程序参数的数目和向量的地址。不传数目和向量的值,而是传地址,因为load_defaults() 需要改变它们的值。特别注意的是,虽然a rgv 是一个指针,但还是要传& argv ,它是指针的地址。

      show _ argv打印参数两次,第一次是在命令行指定它们的时候,第二次是在load _ defaults( )修改它们的时候。为了查看load_defaults() 的运行效果,应确信在主目录中有一个具有[client] 组指定设置的. my.cnf 文件。假设. my.cnf 文件如下:

      

      有可能会从不在命令行或~ /.my.cnf 文件中的s h o w _ a rgv 所产生的输出结果中看到一些选项。如果是这样,它们或许是在系统范围的选项文件中指定的。在主目录中读取.my.cnf 之前,load_defaults() 实际上是在MySQL数据目录中寻找/ e t c / my.cnf 和my.cnf 文件(在Windows中, load_defaults() 在Windows 系统目录中寻找文件C : my. c n f、C : mysql d a t a my.cnf 和my.ini )。

      使用load_defaults() 的客户机程序几乎始终是在选项组列表中指定“ c l i e n t”(以便从选项文件中获取任何通用的客户机设置),但是也可以为请求自己的程序请求特定值。可将下列代码:

      

      修改为:

      

      然后将[ show _ argv] 组加到~ / . my.cnf 文件中:

      

      有了这些改变,再次调用show _ argv 就得到了一个不同的结果,如下所示:

      

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告