mysqlpp:: Connect類型主要負責連接事宜,這是在所有開始mysql操作之前必須進行的(這是句廢話)。
該類型的主要的結果如下所示
mysqlpp::OpeitonalExceptions
通過查看源碼,我看到OptionalExceptions就是一個對於一個表示“是否需要拋出異常”的變量的包裝。在Connection類型的內容,會在出現錯誤的時候調用OpetionalExceptions.throw_exceptions( )方法來查看是否需要使用異常的手段來表示錯誤。
mysqlpp::Connection
這個類型是用戶程序能夠看到的少數幾個類型,它所包含的主要的方法就是“連接”,“斷開連接”,“創建某個數據庫",”drop某個數據庫“(此二者是通過CREATE DATABASE和DROP DATABASE實現的),”查看某張 table 中的數據行數“,”關閉mysql服務等操作“。
同時,該類型也可以返回一個mysqlpp::Query類型,該類型主要負責查詢操作。另外,當我們以后看到mysqlpp::Query的時候,我們很容易發現它的構造函數必定需要一個mysqlpp::Connection,也就是說mysqlpp::Query的所有操作,其實也就是再次調用mysqlpp::Connection的對應方法,后者再去調用mysqlpp::DBDriver來做真正的數據庫操作。
需要注意的是,Connection其實就是一個代理類型,所有的和數據庫進行操作的非查詢類動作(包括了連接,查看連接是否還在,MYSQL的操作出錯的錯誤信息和錯誤號,通信方式(ipc_info方法),選擇當前DB)都是交給mysqlpp::DBDriver來做的。他才是真正的執行者。
唯一tricky的地方在於作用使用了一個為了 safe bool conversion operator 的typedef來防止一些我個人認為無傷大雅的語法問題(http://www.artima.com/cppsource/safebool.html),這些問題如果使用標准的C#語法都是可以避免的,例如C#中並不支持 if (is_true)的語法,而必須寫成if (is_true == true)的形式。
原創作品,轉載請注明出處www.cnblogs.com/aicro。

