使用FireDac 连接 MySQL数据库,参考官方帮助文档
http://docwiki.embarcadero.com/RADStudio/XE7/en/Multithreading_(FireDAC),
实现过程如下:
1、在DataModule界面上 放置一个 FDManager 控件;
2、在 Create 事件中:
procedure TDM.DataModuleCreate(Sender: TObject);
var
oParams: TStrings;
begin
//*****初始化*****
oParams := TStringList.Create;
//********* 连接池
oParams.Add('DriverID=MySQL');
oParams.Add('CharacterSet=utf8');
oParams.Add('Server=localhost');
oParams.Add('Port=3306');
oParams.Add('Database=dbname');
oParams.Add('User_Name=dbuser');
oParams.Add('Password=password');
// 毫秒
oParams.Add('POOL_CleanupTimeout=36000');
// 毫秒
oParams.Add('POOL_ExpireTimeout=600000');
//最多连接数
oParams.Add('POOL_MaximumItems=60');
oParams.Add('Pooled=True');
//*******
FDManager1.Close;
FDManager1.AddConnectionDef('MySQL_Pooled','MySQL',oParams);
FDManager1.Active := True;
end;
3、在查询使用中,动态生成FDConnection,设置Connected为true 就是 从连接池中取一个连接;具体代码如下:
function QueryData( SQLStr:String):String;
var
fdqry1 : TFDQuery;
mConn: TFDConnection;
begin
Try
//***动态创建,用完释放;
mConn := TFDConnection.Create(nil);
mConn.ConnectionDefName := 'MySQL_Pooled';
try
fdqry1 := TFDQuery.Create(nil);
fdqry1.Close;
fdqry1.Connection := mConn;
mConn.Connected := true;
fdqry1.SQL.Clear;
fdqry1.SQL.Add(SQLStr);
fdqry1.Open();
result:='{result:"OK",DataSet:'+DataSetToJSONStr2(fdqry1)+'}';
finally
fdqry1.Free;
mConn.Free;
end;
Except
On E:Exception do
begin
result:='{Result:"失败 Error:'+e.message+'"}';
end;
End;
end;
4、在关闭时候,释放创建的对象
procedure TDM.DataModuleDestroy(Sender: TObject);
begin
oParams.Free;
end;
————————————————
原文链接:https://blog.csdn.net/jhzhao2001/article/details/79059062