以下代码在WIN7 +DELPHI XE 10.3 +sql server 2008下测试通过
设计时界面:
运行如图
界面设计代码如下:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
StyleBook = StyleBook1
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnCreate = FormCreate
DesignerMasterStyle = 0
object Grid1: TGrid
Align = Bottom
CanFocus = True
ClipChildren = True
Position.Y = 232.000000000000000000
Size.Width = 640.000000000000000000
Size.Height = 248.000000000000000000
Size.PlatformDefault = False
TabOrder = 4
Viewport.Width = 636.000000000000000000
Viewport.Height = 223.000000000000000000
end
object BtnDefine: TButton
Position.X = 272.000000000000000000
Position.Y = 192.000000000000000000
TabOrder = 11
Text = #29983#25104#25991#20214
OnClick = BtnDefineClick
end
object BtnConnection: TButton
Position.X = 384.000000000000000000
Position.Y = 192.000000000000000000
TabOrder = 12
Text = 'Connection'
OnClick = BtnConnectionClick
end
object EditDatabase: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 1
Position.X = 144.000000000000000000
Position.Y = 88.000000000000000000
end
object UserName: TLabel
Position.X = 288.000000000000000000
Position.Y = 48.000000000000000000
Text = 'UserName'
TabOrder = 17
end
object Database: TLabel
Position.X = 168.000000000000000000
Position.Y = 48.000000000000000000
Text = 'Database'
TabOrder = 18
end
object Password: TLabel
Position.X = 24.000000000000000000
Position.Y = 160.000000000000000000
Text = 'Password'
TabOrder = 19
end
object server: TLabel
Position.X = 152.000000000000000000
Position.Y = 160.000000000000000000
Text = 'server'
TabOrder = 20
end
object DriverID: TLabel
Position.X = 32.000000000000000000
Position.Y = 48.000000000000000000
Text = 'DriverID'
TabOrder = 21
end
object EditUserName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 2
Position.X = 264.000000000000000000
Position.Y = 88.000000000000000000
end
object Editserver: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 5
Position.X = 128.000000000000000000
Position.Y = 192.000000000000000000
end
object EditPassword: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 3
Position.X = 16.000000000000000000
Position.Y = 192.000000000000000000
end
object EditDriverID: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 0
Position.X = 24.000000000000000000
Position.Y = 88.000000000000000000
end
object FDConnection1: TFDConnection
Left = 552
Top = 208
end
object FDManager1: TFDManager
DriverDefFileName = 'myconnectionName'
ConnectionDefFileName = 'MyFdconnectionDefs.ini'
FormatOptions.AssignedValues = [fvMapRules]
FormatOptions.OwnMapRules = True
FormatOptions.MapRules = <>
Active = True
Left = 552
Top = 272
end
object FDQuery1: TFDQuery
Connection = FDConnection1
SQL.Strings = (
'select EmployeeID,firstname,lastname from Employees')
Left = 552
Top = 328
end
object BindSourceDB1: TBindSourceDB
DataSet = FDQuery1
ScopeMappings = <>
Left = 160
Top = 384
end
object BindingsList1: TBindingsList
Methods = <>
OutputConverters = <>
Left = 76
Top = 384
object LinkGridToDataSourceBindSourceDB1: TLinkGridToDataSource
Category = 'Quick Bindings'
DataSource = BindSourceDB1
GridControl = Grid1
Columns = <>
end
end
object FDGUIxWaitCursor1: TFDGUIxWaitCursor
Provider = 'FMX'
Left = 560
Top = 56
end
object FDStanStorageBinLink1: TFDStanStorageBinLink
Left = 544
end
object FDStanStorageJSONLink1: TFDStanStorageJSONLink
Left = 552
Top = 120
end
object FDPhysMSSQLDriverLink1: TFDPhysMSSQLDriverLink
Left = 552
Top = 392
end
object StyleBook1: TStyleBook
Styles = <
item
end>
Left = 440
Top = 80
end
end
代码 如下:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,
FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,
FireDAC.Phys, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
FireDAC.DApt, FireDAC.FMXUI.Wait, FireDAC.Phys.MSSQLDef, System.Rtti,
FMX.Grid.Style, Data.Bind.EngExt, Fmx.Bind.DBEngExt, Fmx.Bind.Grid,
System.Bindings.Outputs, Fmx.Bind.Editors, FMX.StdCtrls,
FireDAC.Phys.ODBCBase, FireDAC.Phys.MSSQL, FireDAC.Stan.StorageJSON,
FireDAC.Stan.StorageBin, FireDAC.Comp.UI, Data.Bind.Components,
Data.Bind.Grid, Data.Bind.DBScope, FMX.Controls.Presentation, FMX.ScrollBox,
FMX.Grid, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, FMX.Edit,
FMX.Layouts, FMX.ListBox, FMX.Memo
,ioutils
;
type
TForm1 = class(TForm)
FDConnection1: TFDConnection;
FDManager1: TFDManager;
FDQuery1: TFDQuery;
Grid1: TGrid;
BindSourceDB1: TBindSourceDB;
BindingsList1: TBindingsList;
LinkGridToDataSourceBindSourceDB1: TLinkGridToDataSource;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;
FDStanStorageBinLink1: TFDStanStorageBinLink;
FDStanStorageJSONLink1: TFDStanStorageJSONLink;
FDPhysMSSQLDriverLink1: TFDPhysMSSQLDriverLink;
BtnDefine: TButton;
BtnConnection: TButton;
UserName: TLabel;
Database: TLabel;
Password: TLabel;
server: TLabel;
DriverID: TLabel;
EditDatabase: TEdit;
EditUserName: TEdit;
Editserver: TEdit;
EditPassword: TEdit;
EditDriverID: TEdit;
StyleBook1: TStyleBook;
procedure BtnDefineClick(Sender: TObject);
procedure BtnConnectionClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure defconnectionfiles;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
const
cNameConnDef = 'MYSQL_Connection';
procedure TForm1.defconnectionfiles;
var
oDef: IFDStanConnectionDef;
oParams: TFDPhysMSSQLConnectionDefParams; // MSSQL connection params
begin
try
// Adding new persistent connection to fdconnectiondefs.ini
FDManager1.ConnectionDefFileName:='.\MyFDConnectionDefs.ini';
FDManager1.ConnectionDefs.AddConnectionDef;
oDef := FDManager.ConnectionDefs.AddConnectionDef;
oDef.Name := cNameConnDef;
oParams := TFDPhysMSSQLConnectionDefParams(oDef.Params);
oParams.DriverID := EditDriverID.text ;
oParams.Database := EditDatabase.text;
oParams.UserName := EditUserName.Text;
oParams.Password := EditPassword.text;
oParams.Server := Editserver.text;
oParams.OSAuthent := false;
oParams.MARS := false;
oDef.MarkPersistent;
oDef.Apply;
finally
end;
end;
procedure TForm1.BtnDefineClick(Sender: TObject);
var
olist:tstrings;
Str : String;
begin
try
olist:= TStringList.Create;
If FileExists(FDManager1.ConnectionDefFileName) then
begin
//如果存在则修改
FDManager1.GetConnectionDefParams(cNameConnDef, olist);
//........>>> 结果olist 内容为
{ DriverID=MSSQL
Database=Salesdb
User_Name=sa
Password=123
Server=127.0.0.1
OSAuthent=No
MARS=No
Name=MSSQL_Connection}
olist.Values['Database']:=EditDatabase.text;
olist.Values['User_Name']:= EditUserName.text;
olist.Values['Server']:= Editserver.text;
olist.Values['Password']:=EditPassword.text;
olist.Values['DriverID']:=EditDriverID.text;
FDManager1.ModifyConnectionDef(cNameConnDef, olist); //修改
FDManager1.SaveConnectionDefFile; //保存
showmessage('生成完毕!');
end
else
begin
//不存在则新建一个
defconnectionfiles;
end;
finally
olist.Free;
end;
end;//procedure TForm1.BtnDefineClick(Sender: TObject);
procedure TForm1.FormCreate(Sender: TObject);
var
oDef: IFDStanConnectionDef;
oParams: TFDPhysMSSQLConnectionDefParams; // MSSQL connection params
olist:tstrings;
begin
//如果存在直接读取到各EDIT.text中readconnectionfile
try
If FileExists(FDManager1.ConnectionDefFileName) then
begin
olist:= TStringList.Create;
FDManager1.GetConnectionDefParams(cNameConnDef, olist);
EditDatabase.text:=olist.Values['Database'];
EditUserName.text:=olist.Values['User_Name'];
Editserver.text:=olist.Values['Server'];
EditPassword.text:=olist.Values['Password'];
EditDriverID.text:=olist.Values['DriverID'];
end
else
begin
//如果不存在
end;
StyleBook1.Resource.LoadFromFile('.\GoldenGraphite.Style');
finally
olist.Free;
end;
end;//procedure TForm1.FormCreate(Sender: TObject);
procedure TForm1.BtnConnectionClick(Sender: TObject);
begin
If FileExists(FDManager1.ConnectionDefFileName) then
begin
FDConnection1.ConnectionDefName := cNameConnDef;
FDConnection1.Connected := True;
FDQuery1.Active:=true;
end
else
begin
showmessage('岳母还没生产');
end;
end;//procedure TForm1.BtnConnectionClick(Sender: TObject);
end.