Delphi 2010安裝及使用UniDAC 4.0 .
UniDAC是一個功能強大的非可視化跨數據庫的數據訪問組件,可用於Delphi,Delphi for .NET,C++Builder,and Lazarus (Free Pascal)。它提供了對流行數據庫服務器的統一訪問,像Oracle,Microsoft SQL Server,MySQL,InterBase,Firebird,PostgreSQL,SQLite,DB2,Microsoft Access,Sybase Advantage Database Server,Sybase Adaptive Server Enterprise,和其他數據庫(使用ODBC驅動)。
從網上下載到UniDAC 4.0的源碼版本,安裝過程如下:
1.進入"...\unidac40src\Source\Delphi14"文件夾,找到"Make.bat"文件,打開並修改IDE目錄路徑,如下:
set IdeDir="%PROGRAMFILES%\Embarcadero\RAD Studio\7.0 call ..\Make.bat Delphi 14 WIN32 |
因為我這里Delphi 2010不是安裝在默認位置,故修改如下:
set IdeDir="D:\Program Files\Embarcadero\RAD Studio\7.0 call ..\Make.bat Delphi 14 WIN32 |
2.執行"Make.bat"文件,自動執行一系列操作后,到"...\unidac40src\Bin\Delphi14"目錄下,可發現庫已經生成完畢;
3.運行Delphi 2010,菜單→"Tools"→"Options"→"Environment Options"→"Environment Variables",添加"...\unidac40src\Bin\Delphi14"完整路徑到"PATH"環境變量;
4.菜單→"Component"->"Install Packages...","Add"添加"...\unidac40src\Bin\Delphi14"目錄下的"dclunidac140.bpl";
5.菜單→"Tools"→"Options"→"Environment Options"→"Delphi Options"→"Library - Win32",在"Library Path"添加"...\unidac40src\Lib\Delphi14"路徑;
6.此時,已可以使用UniDAC連接數據庫了。若是需要鏈接查看源代碼,將"...\unidac40src\Source"路徑也添加到"Library Path"。
測試連接MySql數據庫:
1.新建一個應用程序,在面板上拖動TUniConnection、TMySQLUniProvider、TUniQuery、TUniDataSource、TDBGrid到窗體上,如下圖所示:
2.右鍵TUniConnection,選擇"Connection Editor...",填入數據庫連接參數,如下圖所示:
3.因為MySql一般設置字符集為UTF-8,而Delphi 2010工程字符集是Unicode,在"Options"頁面,設置"UseUnicode"為True,這可以通知服務器,客戶端和服務器雙方之間的所有數據都將通過UTF-8編碼,設置這個選項會轉換所有的TStringField字段類型到TWideStringField字段類型,使得幾乎所有的語言符號都可以正確工作,但另一方面,也引起工作延遲。
4.關聯其他項,在TUniQuery的SQL里面寫"select * from city",設置Active為True,運行程序,可以看到符號都可以正常顯示,如下圖所示:
代碼實現的方式如下:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
procedure TForm1.FormCreate(Sender: TObject); begin UniQuery1.Connection := UniConnection1; UniDataSource1.DataSet := UniQuery1; DBGrid1.DataSource := UniDataSource1; with UniConnection1 do begin ProviderName := 'MySQL'; Username := 'root'; Password := '123'; Server := '192.168.82.201'; Database := 'world'; Port := 3306; SpecificOptions.Values['UseUnicode'] := 'True'; try Connect; UniQuery1.Close; UniQuery1.SQL.Text := 'select * from city'; UniQuery1.Open; except end; end; end; |