当前位置:数据库 > SQLServer >>

delphi dbexpres支持mysql5

缘起:
期中考试到了,麻烦来了。因为又到了我上场的时候——我负责处理成绩。
先看看前期准备:收集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();

作者 “清风乱翻书”

补充:软件开发 , Delphi ,
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,