C++ Builder資料庫綜合開發實踐

來源:互聯網
上載者:User

一套原來在Access上開發的案頭系統,網頁調閱使用ASP編程,資料維護系統使用C++Builder編程。由於Access是一個案頭的共用型資料庫,所以在通用性和網路開發方面都存在一些問題。因此,需要將該系統移植到伺服器型的資料庫上。使系統既可以通過案頭軟體維護資料,又可以有大量使用者通過網頁調看資料(結果)。

系統初始軟體為:Windows98第二版、Access97、C++Builder4.0、C++Builder5.0、MDAC(Microsoft Data Access Component 2.6中文版)。

一、移植到Oracle的嘗試

在機器上安裝Oracle 7.3案頭版,由於使用不熟練,所以選擇預設安裝,除選擇語言Simplified Chinese外,其他都選擇預設,一路裝下去,沒有問題,重新啟動系統。運行Net Easy Config,配置需要的資料庫別名,然後用SQL Net串連實驗,使用者名稱輸入system,密碼輸入manager,串連伺服器注意,不要輸入伺服器的地址,而是輸入剛才建立的別名,進去了。Ok!

此時開始測試ODBC,建立ODBC資料來源。此時,ODBC中有兩個有關Oracle的驅動,一個是Microsoft ODBC for Oracle,另一個是Oracle 7.3,這是該公司自己開發的驅動。可是怎麼選擇驅動程式都不行,不是提示Oracle的驅動沒有安裝,就是說某個DLL檔案找不到。真是說不行,就不行,行也不行。

多次實驗均無效。。。。

檢查AUTOEXEC.BAT檔案,其中有ORACLE的路徑。那末,問題會在什麼地方呢?本著懷疑一切的態度,在MSDOS方式下隨手輸入了一個PATH命令,奇怪,裡面居然沒有ORACLE的路徑!開啟AUTOEXEC.BAT檔案一琢磨,路徑是不是太長?把路徑中的其他目錄全都注釋掉,重啟系統,嘿!資料來源可以建立了,而且兩個驅動程式哪個都能夠工作。原來由於系統中安裝了C++Builder的兩個版本,而該軟體的目錄又特別深,造成PATH環境變數的溢出,而在WINDOWS環境下啟動時的提示我們看不到,所以沒有發現這個問題。現在知道了,重新調整一下AUTOEXEC.BAT檔案,保留一個C++Builder的路徑。以後得記住安裝C++Builder時最好自己指定一個目錄,這樣可以縮短路徑。這可是說行就行,不行也行。

經過對Oracle的測試,發現將Access資料庫直接移植到Oracle資料庫中時,對文字欄位(TEXT,MEMO)的遷移總有問題,且該系統使用、安裝過於複雜,對機器配置的要求也太高,而該系統需要安裝的使用者較多,且使用者水平參差不齊,所以決定改用現在在自由軟體界比較流行的免費資料庫系統MySQL。

二、移植到MySQL的經曆

1.該系統的安裝比較簡單,若認為自己沒有能力安裝該軟體的話,還可以從網路上下載一個叫PHPTriad for windows的軟體,該軟體安裝時沒有任何選項,自動安裝好MySQL。(實際上,該軟體同時還安裝好了APACHE伺服器、PHP語言解譯器,這正好符合將來把ASP的網頁換到PHP上去;另外,該軟體還同時安裝配置好了一個網頁資料庫維護工具PHPMyAdmin,PHPMyAdmin對於SQL語言不算熟的人來說管理資料庫極其方便。)

2.再安裝MYODBC(即ODBC for MySQL,我的是2.5版本),注意下載該軟體時,要分清95版還是NT版的。安裝也很簡單,一路OK。好了,建立資料來源work,填好IP地址,資料庫名填mymember(這時系統提供的資料庫),進行測試,不行?改用系統自動安裝的sample-mysql資料來源串連,鏈上了。仔細檢查配置,沒有錯誤,為什麼系統自己做的資料來源可以用,我做的就不行呢?把自己建立的刪掉,把sample-mysql改名為work,再串連,嘿嘿,不行了!哈哈,原來就出在名字上,在work後面加上-mysql,再串連,好了,原來myodbc要求它的資料來源名稱必須以mysql結尾!解決了資料來源,下面開始移植原來的Access資料庫。

移植工作比較簡單,開啟Access資料庫,選中第一張表,從File菜單中選擇“另存新檔/匯出”,選擇“另存新檔一個外部檔案或資料庫”,選確定,在彈出的對話方塊中的“檔案類型”下拉選單中選擇“ODBC資料庫”,又彈出一個“匯出”的對話方塊,如果打算給該資料表改名的話,現在可以輸入新的名字,然後選擇確定,在彈出的“選擇資料來源”對話方塊中點Machine Data Source(機器資料來源),找到自己建立的work-MySQL資料來源,按確定。此時會回到Access資料庫,如果資料表很大的話,狀態列中會有一個匯出的進度,否則,匯出已經完成。

匯出成功後,通過PHPMYADMIN檢查匯出的資料庫,結構、內容都正常。需要注意的是,如果資料表中用到了Access提供的ID(自動增量)欄位的話,需要手工在目標資料庫中修改對應欄位的屬性(這在PHPMyAdmin中很容易實現,找到該欄位後點“改變”,在該欄位的屬性最後一項“額外”的下拉選單中選擇auto_increment,然後儲存。PHPMyAdmin的介面是英文的?其實只要在安裝有PHPMyAdmin的目錄Apache\Htdocs\PHPMyAdmin中找到config.inc.php檔案,搜尋require,把引號中的“english.inc.php”改成“chinese_gb.inc.php”,再去調用網頁中的PHPMyAdmin,嘻嘻,是不是變成中文了?其實chinese_gb.inc.php是一個檔案名稱,就在該目錄下,你還可以把介面變成BIG5碼呢)。

3.終於把移植的工作做完了,下面開始用C++BUILDER編程。對資料庫使用ADO來訪問。步驟如下:在ADO控制項標籤中選ADOTable,在主視窗上先放置一個ADOTable1,然後點擊左邊對象觀察器(Object Inspector)中ConnectionString右邊的“…”表徵圖,選“Use Connection String”,點“Build”,在“Provider”標籤中選擇“Microsoft OLE DB Provider for ODBC Drivers”,點“Next>>”按鈕,在“specify the source of data”中選“use data source name”,從下拉選單中選擇資料來源work-MySQL,點“Test Connection”,顯示串連成功,確定,OK,返回,在對象觀察器中Table Name屬性點下拉選單,選擇需要的資料表。再從Data Access控制項標籤中選DataSource,在主視窗上放置一個DataSource1,在對象觀察器中DataSet屬性點下拉選單,選擇ADOTable1,下面進行介面輸出的布局,選擇“Data Controls”控制項標籤中的DBEdit根據需要放置,並把DataSource屬性設定為DataSource1 ,DataField屬性設定為所需要的欄位名。如此放置幾個欄位,最後從“Data Controls”控制項標籤中選“DBNavigator”放在視窗上。再把ADOTable1的Active屬性改為true,咦,怎麼有的欄位顯示成(MEMO),先不管他,運行程式,輸入一些內容,點擊提交,怎麼沒了?有的欄位還縮短了,多試幾次,發現新輸入的內容不能超過原來的長度,那麼原來是空的欄位就永遠沒法輸入內容了。這是怎麼回事?這種用法肯定沒有問題,以前在Access資料庫上就是這麼用的。那麼,就是MySQL的ODBC有問題,退出C++Builder,開啟資料來源的選項仔細分析,其中第一項vaaaa很象。把它選中,確定,重新運行C++Builder,再運行程式,一切OK。原來MySQL這樣的自由軟體,其ODBC選項很多,是為了適應各方面需要,不象微軟或其他的資料庫那樣預設值就可以用。這個選項可能是為了最佳化一些網路上的應用,而把資料庫欄位的預設值總是假設為最小狀態,從而造成這個問題。這可能也是自由軟體的一個小缺點吧。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.