程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL數據庫技術(31)

MySQL數據庫技術(31)

編輯:關於MYSQL數據庫

  6.3 客戶機程序2—增加錯誤檢查

    我們的第二個客戶機程序將像第一個客戶機程序一樣,但是將修改它們,考慮錯誤出現的可能性。“將錯誤檢查作為讀者的練習”這樣的項目在編程文獻中相當常見,這或許是因為檢查錯誤相當令人討厭。但是,我贊同這種觀點,即MySQL 客戶機程序應該測試錯誤條件並適當地進行回應。由於某種原因,返回狀態值的客戶機庫的調用做這些事情,而且您要承擔忽略它們的後果。您最終還是要試圖捕獲由於沒有錯誤檢查而出現在程序中的錯誤,這些程序的用戶會對程序運行如此不規律感到奇怪。考慮我們的程序,客戶機程序1。如何知道它是否真正連接到服務器上?可以通過查看服務器的日志,找出與運行程序時間相應的Connect和Quit事件:

    這條消息表示根本沒有創建連接。不幸的是,客戶機程序1沒有告訴我們出現的這些結果。實際上它不能。它不能實現任何錯誤檢查,所以它甚至不知道自己發生了什麼事。無論如何,當然不一定必須查看日志來尋找是否能連接到服務器!讓我們立刻改正它。在MySQL 客戶機庫中返回值的例程基本上以下列兩種方式之一表示成功或失敗:

    ■ 成功時,值的指針函數返回一個非NULL 指針,失敗時返回N U L L(在這裡NULL 的意思是“C NULL 指針”,而不是“MySQL NULL 列值”)。迄今為止,我們使用的客戶機庫的例程mysql_init() 和mysql_real_connect() 都用返回連接處理程序的指針來表示成功, NULL 表示失敗。

    ■ 整型數值的函數一般成功返回0,失敗返回非0。不要測試特定的非0值,如- 1。因為當失敗時,並不保證客戶機庫函數返回任何特定的值。有時,您可能會看到像如下的較舊的錯誤地測試返回值的代碼:

    這個測試可能工作,也可能不工作。MySQL API 不將任何非0錯誤的返回指定為特定的值,而只判斷它(顯然地)是否為0。這個測試應該寫成下面兩段之一:

    或如下所示:

    這兩個測試是等價的。如果審核MySQL 的源代碼,則可以發現,它基本上用第一種形式測試,因為這編寫起來更簡短。

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