引言
隨著現(xiàn)代計(jì)算機(jī)軟硬件及網(wǎng)絡(luò)技術(shù)的發(fā)展,在網(wǎng)上查找資料已成為現(xiàn)在獲取信息的最重要手段之一。眾所周知,所有的網(wǎng)上信息都是儲(chǔ)存在網(wǎng)站數(shù)據(jù)庫中的,這些信息的查詢、更新等操作的功能則是由數(shù)據(jù)庫服務(wù)器提供的,顯然,數(shù)據(jù)庫服務(wù)器的性能將直接關(guān)系到網(wǎng)站的生存。網(wǎng)站搭建中用的最多的數(shù)據(jù)庫服務(wù)器是oracle和MySQL,前者功能強(qiáng)大,屬于旗艦型數(shù)據(jù)庫服務(wù)器,但前期投入太大;后者功能不斷完善,簡(jiǎn)單易用而又不失性能,并且可以免費(fèi)獲得。因此,許多中小型網(wǎng)站的數(shù)據(jù)庫服務(wù)器選用MySQL,而且,由于MySQL性能出色,一些大型網(wǎng)站也選用了MySQL。
由此可見,MySQL數(shù)據(jù)庫服務(wù)器在網(wǎng)站建設(shè)中的表現(xiàn)是十分出色的。但是,正因?yàn)檫@樣,幾乎很少有人將MySQL用于應(yīng)用軟件的開發(fā)中。本文將詳細(xì)介紹VC環(huán)境中MySQL數(shù)據(jù)庫服務(wù)器不同接口的應(yīng)用,并最終將產(chǎn)生一個(gè)CDatabase類封裝MySQL數(shù)據(jù)庫接口功能。
數(shù)據(jù)庫接口實(shí)現(xiàn)與應(yīng)用的計(jì)算機(jī)環(huán)境:硬件,C466、128M、15G;軟件及操作系統(tǒng),VISUAL C++ 6.0、MySQL 3.23.22-beta for win32、WIN98。
1 MySQL數(shù)據(jù)庫簡(jiǎn)介
MySQL是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫語言,它使得存儲(chǔ)、更新和存取信息更加容易。MySQL是一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序mysqld和許多不同的客戶程序以及庫組成的。
MySQL的主要目標(biāo)是快速、健壯和易用。最初是因?yàn)镸ySQL的創(chuàng)始人需要這樣的一個(gè)SQL服務(wù)器,它能處理與任何不昂貴硬件平臺(tái)上提供數(shù)據(jù)庫的廠家在一個(gè)數(shù)量級(jí)上的大型數(shù)據(jù)庫,但速度更快,MySQL因此就開發(fā)出來了。
它提供C,C++,JAVA(JDBC),Perl,Python,PHP and TCL 的API接口;多平臺(tái)支持,包括Solaris,SunOS,BSDI,SGI IRIX,AIX,DEC UNIX,Linux,F(xiàn)reeBSD,SCO OpenServer,NetBSD,OpenBSD,HPUX,Win9x and NT;多樣的數(shù)據(jù)類型,包括有/無符號(hào)1,2,3,4,8字節(jié)integers,F(xiàn)LOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,DATETIME,YEAR,SET,ENUM;非常靈活和安全的權(quán)限系統(tǒng),密碼加密;為Windows提供ODBC接口,可通過Access與之相聯(lián),另有第三方開發(fā)商提供多樣的 ODBC驅(qū)動(dòng)程序;在MySQL 3.23中使用新MyISAM的表大小可達(dá)8百萬 TB(2^63個(gè)字節(jié));多種語言支持,但不支持中文。
然而,為了實(shí)現(xiàn)快速、健壯和易用的目的,MySQL必須犧牲一部分靈活而強(qiáng)大的功能,如子查詢、存儲(chǔ)過程與觸發(fā)器、外鍵、事物處理等。因而,MySQL在某些應(yīng)用中缺乏靈活性,但這也使它對(duì)數(shù)據(jù)的處理速度較其它數(shù)據(jù)庫服務(wù)器至少快2~3倍。
MySQL自身不支持Windows的圖形界面,因此,所有的數(shù)據(jù)庫操作及管理功能都只能在MS-DOS方式下完成。首先,必須登陸MySQL服務(wù)器,即在提示符\MySQL\BIN>下輸入MYSQL –H host –U user –Ppassword,提示符改為mysql>時(shí)表示登陸成功。然后,選擇所操作的數(shù)據(jù)庫,即mysql> USE databasename。接著就可以用SQL語句進(jìn)行查詢了。如果需要退出數(shù)據(jù)庫服務(wù)器,可執(zhí)行QUIT命令,這樣就成功退出服務(wù)器了。
當(dāng)然,由于MySQL的知名度日益增加,許多第三方軟件公司推出了MySQL在Windows環(huán)境中的具有圖形界面的支持軟件,如EMS公司的EMS MYSQL MANAGER就提供了Windows形式的MySQL數(shù)據(jù)庫操作功能。
2 利用ODBC API實(shí)現(xiàn)MySQL數(shù)據(jù)庫功能調(diào)用
ODBC(Open Database Connectivity)即開放式數(shù)據(jù)庫互聯(lián),作為Windows開放性結(jié)構(gòu)的一個(gè)重要部分已經(jīng)為很多的Windows程序員所熟悉,ODBC的工作依賴于數(shù)據(jù)庫制造商提供的驅(qū)動(dòng)程序,使用ODBC API的時(shí)候,Windows的ODBC管理程序把數(shù)據(jù)庫訪問的請(qǐng)求傳遞給正確的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序再使用SQL語句指示DBMS(數(shù)據(jù)庫管理系統(tǒng))完成數(shù)據(jù)庫訪問工作,因此,ODBC的存在為我們開發(fā)應(yīng)用數(shù)據(jù)庫程序提供了非常強(qiáng)大的能力和靈活性。在Windows下可以對(duì)多種數(shù)據(jù)庫安裝ODBC數(shù)據(jù)庫,用來連接數(shù)據(jù)庫并訪問它們的數(shù)據(jù)。
對(duì)于MySQL數(shù)據(jù)庫服務(wù)器來說,它的制造商同樣提供了相應(yīng)的ODBC驅(qū)動(dòng)程序,其最新版本為myodbc-2.50.31-win95。在WIN98環(huán)境下進(jìn)行安裝后,就可以利用編程語言通過ODBC API對(duì)MySQL數(shù)據(jù)庫進(jìn)行各種ODBC所支持的操作。因?yàn)镺DBC屏蔽了各種數(shù)據(jù)庫的差異,所以,原來用于對(duì)其它數(shù)據(jù)庫進(jìn)行操作的程序,通過ODBC同樣能夠?qū)ySQL數(shù)據(jù)庫進(jìn)行操作。也就是說,ODBC使程序?qū)?shù)據(jù)庫的通用性提高了。
用VC通過ODBC API對(duì)MySQL數(shù)據(jù)庫進(jìn)行編程,必須要對(duì)MySQL數(shù)據(jù)源進(jìn)行設(shè)置,具體設(shè)置如圖1:
通過上圖的設(shè)置,接著我們就可以按照一般的ODBC數(shù)據(jù)庫編程方法,對(duì)MySQL數(shù)據(jù)庫進(jìn)行編程。
隨著現(xiàn)代計(jì)算機(jī)軟硬件及網(wǎng)絡(luò)技術(shù)的發(fā)展,在網(wǎng)上查找資料已成為現(xiàn)在獲取信息的最重要手段之一。眾所周知,所有的網(wǎng)上信息都是儲(chǔ)存在網(wǎng)站數(shù)據(jù)庫中的,這些信息的查詢、更新等操作的功能則是由數(shù)據(jù)庫服務(wù)器提供的,顯然,數(shù)據(jù)庫服務(wù)器的性能將直接關(guān)系到網(wǎng)站的生存。網(wǎng)站搭建中用的最多的數(shù)據(jù)庫服務(wù)器是oracle和MySQL,前者功能強(qiáng)大,屬于旗艦型數(shù)據(jù)庫服務(wù)器,但前期投入太大;后者功能不斷完善,簡(jiǎn)單易用而又不失性能,并且可以免費(fèi)獲得。因此,許多中小型網(wǎng)站的數(shù)據(jù)庫服務(wù)器選用MySQL,而且,由于MySQL性能出色,一些大型網(wǎng)站也選用了MySQL。
由此可見,MySQL數(shù)據(jù)庫服務(wù)器在網(wǎng)站建設(shè)中的表現(xiàn)是十分出色的。但是,正因?yàn)檫@樣,幾乎很少有人將MySQL用于應(yīng)用軟件的開發(fā)中。本文將詳細(xì)介紹VC環(huán)境中MySQL數(shù)據(jù)庫服務(wù)器不同接口的應(yīng)用,并最終將產(chǎn)生一個(gè)CDatabase類封裝MySQL數(shù)據(jù)庫接口功能。
數(shù)據(jù)庫接口實(shí)現(xiàn)與應(yīng)用的計(jì)算機(jī)環(huán)境:硬件,C466、128M、15G;軟件及操作系統(tǒng),VISUAL C++ 6.0、MySQL 3.23.22-beta for win32、WIN98。
1 MySQL數(shù)據(jù)庫簡(jiǎn)介
MySQL是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫語言,它使得存儲(chǔ)、更新和存取信息更加容易。MySQL是一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序mysqld和許多不同的客戶程序以及庫組成的。
MySQL的主要目標(biāo)是快速、健壯和易用。最初是因?yàn)镸ySQL的創(chuàng)始人需要這樣的一個(gè)SQL服務(wù)器,它能處理與任何不昂貴硬件平臺(tái)上提供數(shù)據(jù)庫的廠家在一個(gè)數(shù)量級(jí)上的大型數(shù)據(jù)庫,但速度更快,MySQL因此就開發(fā)出來了。
它提供C,C++,JAVA(JDBC),Perl,Python,PHP and TCL 的API接口;多平臺(tái)支持,包括Solaris,SunOS,BSDI,SGI IRIX,AIX,DEC UNIX,Linux,F(xiàn)reeBSD,SCO OpenServer,NetBSD,OpenBSD,HPUX,Win9x and NT;多樣的數(shù)據(jù)類型,包括有/無符號(hào)1,2,3,4,8字節(jié)integers,F(xiàn)LOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,DATETIME,YEAR,SET,ENUM;非常靈活和安全的權(quán)限系統(tǒng),密碼加密;為Windows提供ODBC接口,可通過Access與之相聯(lián),另有第三方開發(fā)商提供多樣的 ODBC驅(qū)動(dòng)程序;在MySQL 3.23中使用新MyISAM的表大小可達(dá)8百萬 TB(2^63個(gè)字節(jié));多種語言支持,但不支持中文。
然而,為了實(shí)現(xiàn)快速、健壯和易用的目的,MySQL必須犧牲一部分靈活而強(qiáng)大的功能,如子查詢、存儲(chǔ)過程與觸發(fā)器、外鍵、事物處理等。因而,MySQL在某些應(yīng)用中缺乏靈活性,但這也使它對(duì)數(shù)據(jù)的處理速度較其它數(shù)據(jù)庫服務(wù)器至少快2~3倍。
MySQL自身不支持Windows的圖形界面,因此,所有的數(shù)據(jù)庫操作及管理功能都只能在MS-DOS方式下完成。首先,必須登陸MySQL服務(wù)器,即在提示符\MySQL\BIN>下輸入MYSQL –H host –U user –Ppassword,提示符改為mysql>時(shí)表示登陸成功。然后,選擇所操作的數(shù)據(jù)庫,即mysql> USE databasename。接著就可以用SQL語句進(jìn)行查詢了。如果需要退出數(shù)據(jù)庫服務(wù)器,可執(zhí)行QUIT命令,這樣就成功退出服務(wù)器了。
當(dāng)然,由于MySQL的知名度日益增加,許多第三方軟件公司推出了MySQL在Windows環(huán)境中的具有圖形界面的支持軟件,如EMS公司的EMS MYSQL MANAGER就提供了Windows形式的MySQL數(shù)據(jù)庫操作功能。
2 利用ODBC API實(shí)現(xiàn)MySQL數(shù)據(jù)庫功能調(diào)用
ODBC(Open Database Connectivity)即開放式數(shù)據(jù)庫互聯(lián),作為Windows開放性結(jié)構(gòu)的一個(gè)重要部分已經(jīng)為很多的Windows程序員所熟悉,ODBC的工作依賴于數(shù)據(jù)庫制造商提供的驅(qū)動(dòng)程序,使用ODBC API的時(shí)候,Windows的ODBC管理程序把數(shù)據(jù)庫訪問的請(qǐng)求傳遞給正確的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序再使用SQL語句指示DBMS(數(shù)據(jù)庫管理系統(tǒng))完成數(shù)據(jù)庫訪問工作,因此,ODBC的存在為我們開發(fā)應(yīng)用數(shù)據(jù)庫程序提供了非常強(qiáng)大的能力和靈活性。在Windows下可以對(duì)多種數(shù)據(jù)庫安裝ODBC數(shù)據(jù)庫,用來連接數(shù)據(jù)庫并訪問它們的數(shù)據(jù)。
對(duì)于MySQL數(shù)據(jù)庫服務(wù)器來說,它的制造商同樣提供了相應(yīng)的ODBC驅(qū)動(dòng)程序,其最新版本為myodbc-2.50.31-win95。在WIN98環(huán)境下進(jìn)行安裝后,就可以利用編程語言通過ODBC API對(duì)MySQL數(shù)據(jù)庫進(jìn)行各種ODBC所支持的操作。因?yàn)镺DBC屏蔽了各種數(shù)據(jù)庫的差異,所以,原來用于對(duì)其它數(shù)據(jù)庫進(jìn)行操作的程序,通過ODBC同樣能夠?qū)ySQL數(shù)據(jù)庫進(jìn)行操作。也就是說,ODBC使程序?qū)?shù)據(jù)庫的通用性提高了。
用VC通過ODBC API對(duì)MySQL數(shù)據(jù)庫進(jìn)行編程,必須要對(duì)MySQL數(shù)據(jù)源進(jìn)行設(shè)置,具體設(shè)置如圖1:
通過上圖的設(shè)置,接著我們就可以按照一般的ODBC數(shù)據(jù)庫編程方法,對(duì)MySQL數(shù)據(jù)庫進(jìn)行編程。

