6.5 客戶機程序4—在運行時獲取連接參數
現在我們有了容易修改的防止出現錯誤的連接代碼,我們要了解一些如何做某些比使用NULL 連接參數更靈巧的事情,如在運行時允許用戶指定一些值。客戶機程序3由於固定連接參數方面的缺陷,要想更改那些值中的任何一個,都必須編輯源文件並重新編譯。這十分不方便,特別是想使程序用於其他人時。在運行時指定連接參數的一個通用的方法是使用命令行選項。MySQL 分發包中的程序接受兩種形式的連接參數,如表6 - 1所示。
與標准的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 ( ),並舉例說明了對參數向量如何做出這樣的修改: