程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> delphi dbexpres支持mysql5

delphi dbexpres支持mysql5

編輯:Delphi

緣起:
期中考試到了,麻煩來了。因為又到了我上場的時候——我負責處理成績。
先看看前期准備:收集9科成績。
目前的做法是將含有考號的學生名單,按考場排列,做成xls發給各個學科,由學科備課組長負責將卷面分數錄入後交年級。
我再將九科的卷面成績,按照考號排序,復制粘貼到一個xls表中,這比較方便。
然後接收答題卡成績,再復制粘貼到9個xls表中。因為肯定有學生答題卡塗錯,所以不能象卷面成績那樣進行簡單排序後就可以復制粘貼合並為一個表。必須使用vlookup函數將卷面成績和答題卡的成績合並。
合並成績時,如果答題卡成績顯示為“#N/A”標記的說明卡號塗錯了,通知學科備課組長進行核實,確定是缺考還是塗錯,後者需要手工評卷,將分數報上來進行修正。
期間還要將報上來的卷面加分出錯的給改正過來。
收集成績是最繁瑣的事情,之後成績處理因為寫好了程序,就很簡單了。
考慮後台使用mysql數據庫,前台使用delphi開發專用錄入程序,減少合並成績的麻煩。
考慮到需要能夠簡單發布,決定采用Delphi7+dbExpress+MySQL做平台。
但dbExpress支持的MySQL,D7為3.23.x,D2006為4.1.x,而現在主流是5.0.x,而5.1.x已經進入rc狀態,很快就要進入Generally Available。
怎麼辦?

解決:
http://www.justsoftwaresolutions.co.uk/delphi/dbexpress_and_mysql_5.html有解決方案。支持5.0.x版本。
下載後的配置
在\delphi7\dbexpress\dbxdrivers.ini 添加[MYSQL5]節:
[MYSQL5]
GetDriverFunc=getSQLDriverMYSQL50
LibraryName=dbxopenmysql50.dll
VendorLib=libmysql50.dll
BlobSize=-1
Database=DBNAME
ErrorResourceFile=
HostName=ServerName
LocaleCode=0000
Password=password
User_Name=user
ServerCharSet=GBK

在\delphi7\dbexpress\dbxdrivers.ini的 [Installed Drivers] 節追加一行:
MYSQL5=1

然後dbExpress面板的TSQLConnection就可以可視化配置了。
libraryName改成(path) debopenmysql50.dll 如 c:\debopenmysql50.dll
getDriverFunc也改成getSQLDriverMYSQL50<-這個是上面那個dll裡面的function
vendorLib 旁邊打(path)libmysql.dll 如 c:\libmysql.dll
記得要用mysql5.0裡面付的libmysql.dll
libmySQL.dll 以及 dbxopenmysql50.dll 放在程式資料夾下
然後照一般的設定Database、Hostname、User_Name、Password
然後連線就ok了,前提是MySql要記得開.

最終程序結構如下:
var
Connection: TSQLConnection;
begin
Connection := TSQLConnection.Create(nil);
Connection.DriverName := 'dbxmysql';
Connection.GetDriverFunc := 'getSQLDriverMYSQL50';
Connection.LibraryName := 'dbxopenmysql50.dll';
Connection.VendorLib := 'libmysql.dll';
Connection.Params.Append('Database=NAME_OF_DATABASE);
Connection.Params.Append('User_Name=NAME_OF_USER');
Connection.Params.Append('Password=PASSWORD');
Connection.Params.Append('HostName=localhost');
Connection.Open;

// ... do stuff

Connection.Free;
end;

或者
conn.ConnectionName = "<連接名>";
conn.DriverName = "MYSQL5";
conn.GetDriverFunc = "getSQLDriverMYSQL50";
conn.KeepConnection = true;
conn.LibraryName = "dbxopenmysql50.dll";
conn.LoadParamsOnConnect = false;
conn.LoginPrompt = false;
conn.VendorLib = "libmysql50.dll";
conn.Params.Append("Database=<數據庫名>");
conn.Params.Append("User_Name=<用戶名>");
conn.Params.Append("Password=<密碼>");
conn.Params.Append("HostName=<主機名名>");
conn.Params.Append("ServerCharSet=UTF-8"); //或者GBK/GB2312

conn.Open();
// DB操作
conn.Close();

作者 “清風亂翻書”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved