網上有很多關於Delphi串連MySql資料庫的文章,在這裡,我只記錄下自己測試過的方法,以備所需。
系統內容:Windows XP SP3
軟體環境:Delphi 7 、mysql-installer-5.5.15.0
1.ODBC方式
必須要先有MySql的ODBC驅動,我下載的是全安裝版,包括MySql伺服器、各種所支援的串連、工作台、樣本資料庫、文檔,若是無ODBC驅動,可以到官網http://dev.mysql.com/downloads/connector/odbc/下載。
①資料來源方式
首先,確認安裝了MySql的ODBC驅動,開啟“控制台”→“管理工具”→“資料來源”,切換到“驅動程式”頁,查看“MySql ODBC 5.1 Driver",如所示:
切換到"系統DSN"→"添加"→"MySql ODBC 5.1 Driver",如所示:
彈出MySql資料來源配置,資料來源名稱隨意,TCP/IP Server為資料庫地址,User使用者名稱,Password密碼,Database串連的資料庫,點"Test"進行測試連接,如所示:
點擊"OK"後,即可看到新增加了一個資料來源。開啟Delphi 7,在表單上放置TADOConnection、TADOQuery、TDataSource和TDBGrid,相互之間關聯,配置TADOConnection的連接字串,"提供者"選擇"Microsoft OLE DB Provider for ODBC Drivers",下一步,選擇"使用資料來源名稱",下拉選擇剛才配置的資料來源,其他的不用再填寫,測試連接,如所示:
在TADOQuery寫查詢語句,設定Active為True,資料都顯示在表格上,如所示:
②驅動方式
跟上面一樣,先確認安裝MySql的ODBC驅動。開啟Delphi 7,在表單上放置TADOConnection、TADOQuery、TDataSource和TDBGrid,相互之間關聯,配置TADOConnection的連接字串,為以下內容:
1 |
|
Driver={MySQL ODBC 5.1 Driver}; Server=127.0.0.1; Database=world; User=root; Password=a123; Option=3; |
在TADOQuery寫查詢語句,設定Active為True,資料都顯示在表格上,如所示:
2.ZeosLib方式
ZeosLib是一個用於Borland開發工具的資料庫中介軟體,包括Delphi、C++ Builder和Kylix。從http://sourceforge.net/projects/zeoslib/files/下載"ZEOSDBO-6.6.6-stable"版本,解壓到檔案夾。開啟Delphi 7,載入工程項目包"...\ZEOSDBO\packages\delphi7\ZeosDbo.bpg",按順序編譯,或者右鍵選擇"Compile
All From Here",如所示:
編譯完成後,再選擇"ZComponentDesign.bpl",右鍵選擇"Install",安裝組件成功,彈出如下對話方塊:
再添加所編譯完成的目錄,即"...\ZEOSDBO\packages\delphi7\build",菜單"Tools"→"Environment Options"→"Library"→"Library path",添加此目錄。另外,若需要在編寫代碼時,能進入ZeosLib原始碼的話,需要添加原始碼檔案夾目錄,包括:"...\ZEOSDBO\src\core"、"...\ZEOSDBO\src\parsesql"、"...\ZEOSDBO\src\plain"、"...\ZEOSDBO\src\dbc"和"...\ZEOSDBO\src\component"(注意:會在這些目錄下再次編譯單元檔案)。
建立一個應用程式,在表單上放置TZConnection、TZQuery、TDataSource和TDBGrid,在表單建立函數裡,寫入以下代碼:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 |
|
procedure TForm1.FormCreate(Sender: TObject); begin //---------------互相關聯------------------------ zqry1.Connection := zcon1; ds1.DataSet := zqry1; dbgrd1.DataSource := ds1; //---------------設定參數------------------------ zcon1.Protocol := 'mysql'; zcon1.Port := 3306; zcon1.HostName := '127.0.0.1'; zcon1.User := 'root'; zcon1.Password := 'a123'; zcon1.Database := 'world'; zcon1.Connected := True; //---------------查詢顯示------------------------ zqry1.Close; zqry1.SQL.Text := 'SELECT * FROM City'; zqry1.Active := True; end; |
當然手動在設計器上進行設定也可以。因為這裡串連的是MySql資料庫,需要拷貝MySql資料庫用戶端所需的DLL(即:libmysql.dll,這裡我安裝的是在"...\MySQL\MySQL Server 5.5\lib"裡面)複製到Windows系統目錄(通常是"C:\WINDOWS\system32")或者工程目錄下。程式如所示:
當程式發給別人使用時,需要連同"libmysql.dll"一起發送。若是顯示的資料有亂碼,這是因為MySQl資料庫預設使用UTF-8字元集,則先在查詢之前,設定字元集,如下代碼所示:
1 2 3 4 5 6 7 |
|
begin zqry1.Close; zqry1.SQL.Text := 'set names gbk'; zqry1.ExecSQL; zqry1.SQL.Text := 'select * from city'; zqry1.Active := True; end; |
或者在TZConnection的Properties屬性添加"codepage=gbk"。
3.其他方式
另外,還有其他的第三方控制項可以串連MySql等其他資料庫,如:AnyDAC、MyDAC 、DAC for MySQL等等。
擴充資料:
1.MySQL with Delphi http://delphi.about.com/od/mysql/MySQL_with_Delphi.htm
2.Zeoslib Portal :: Home http://zeos.firmos.at/
3.使用ZeosDbo元件與MySQL連線及建立Master/Detail資料表
http://cdwalkman.my-php.net/_tech/mysql_ZeosLib_delphi.htm