程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql入門系列:MYSQL客戶機程序4—在運行時獲取連接參數

Mysql入門系列:MYSQL客戶機程序4—在運行時獲取連接參數

編輯:關於MYSQL數據庫

   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 就得到了一個不同的結果,如下所示:

  

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved