Kod: Tümünü seç
FDConnection1.Params.Add('Database=...');
FDConnection1.Params.Add('User_Name=root');
FDConnection1.Params.Add('Password=...');
FDConnection1.Params.Add('CharacterSet=utf8');
FDConnection1.Params.Add('DriverID=MySQL');
Kod: Tümünü seç
FDConnection1.Params.Add('Database=...');
FDConnection1.Params.Add('User_Name=root');
FDConnection1.Params.Add('Password=...');
FDConnection1.Params.Add('CharacterSet=utf8');
FDConnection1.Params.Add('DriverID=MySQL');
Embarcadero'dan verdiğim bu linkte şöyle yazdı:To connect to the MySQL Embedded server, you do not need to specify Server, Host, Port, User_Name, Password connection definition parameters. If you do not specify the --skip-networking argument, then using libmysqld.dll you can connect to the remote MySQL servers, the same as with normal libmysql.dll.
Kod: Tümünü seç
unit uSplash;
interface
{$IF CompilerVersion >= 21.0}
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
{$ENDIF}
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Data.FMTBcd, Data.DB,
Data.SqlExpr, 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.VCLUI.Wait, FireDAC.Stan.Param,
FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet,
FireDAC.Comp.Client, FireDAC.Comp.UI, FireDAC.Phys.IBBase, FireDAC.Phys.FB,
IBX.IBCustomDataSet, IBX.IBTable, IBX.IBDatabase, FireDAC.Comp.ScriptCommands,
FireDAC.Stan.Util, FireDAC.Comp.Script, FireDAC.Phys.MySQL;
type
TfrmSpash = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
FDConnection1: TFDConnection;
FDQuery1: TFDQuery;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;
FDPhysMySQLDriverLink1: TFDPhysMySQLDriverLink;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FStartTicks: integer;
FOKToClose: boolean;
public
{ Public declarations }
property OKToClose: boolean read FOKToClose write FOKToClose;
end;
var
frmSpash: TfrmSpash;
implementation
{$R *.dfm}
uses
uConsts,uServerMain,uDiskIO;
procedure TfrmSpash.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmSpash.FormCreate(Sender: TObject);
var
foldername:widestring;
begin
App_path:=ExtractFilePath(Application.ExeName);
if (App_path[Length(App_path)] = '\') then
begin
Delete(App_path, Length(App_path), 1);
end;
//ShowMessage(app_path);
BorderStyle:=bsNone;
Position:=poScreenCenter;
//FormStyle:=fsStayOnTop;
Panel1.Align:=alClient;
FStartTicks := GetTickCount;
//data klasörü yoksa oluştur
//gerekli klasörleri oluştur.
if not CanCreateRequieredFolders then begin //gerekli klasörleri oluştur
Showmessage('Folder creating error!');
Halt; //programı kapat
end;
//klasörler oluşturuldu ya da zaten vardı...
//db yoksa oluştur
if DirectoryExists(app_path+DataFolder+'\'+VnDatabaseName) then //db dosyası varsa
begin
//db bulundu
end else begin //db dosyası yoksa
//klasör oluştur
//data içindekiler
SetCurrentDirectory(pwidechar(App_path+'\'+DataFolder));
//logs
foldername:=app_path+'\'+DataFolder+'\'+VnDatabaseName;
if not DirectoryExists(foldername) then begin
if not CreateDir(VnDatabaseName) then begin
//Result:=false;
exit;
end;
end;
//dbyi oluştur MySql
//FDConnection1.Close;
with FDPhysMySQLDriverLink1 do begin
//Release;
DriverID:='MySQL';
VendorLib:=App_path+'\libmysqld.dll';
EmbeddedArgs.Add('--basedir='+App_path+';');
//EmbeddedArgs.Add('--datadir='+App_path+'\'+DataFolder+';');
//EmbeddedArgs.Add('--language='+App_path+';');
EmbeddedArgs.Add('--datadir=./'+DataFolder);
//EmbeddedArgs.Add('--language=./');
EmbeddedArgs.Add('--skip-innodb;');
//EmbeddedArgs.Add('--innodb_data_home_dir='+App_path+'\'+DataFolder+';');
EmbeddedArgs.Add('--skip-networking;');
end;
with FDConnection1 do begin
//Connected:=false;
LoginPrompt := False;
Params.Clear;
Params.Values['DriverID'] := 'MySQL';
//Params.Values['User_Name'] := 'comp';
//Params.Values['Password'] := 'myvenus';
//Params.Values['CharacterSet'] := 'UTF8';;
//Params.Values['Database'] := VnDatabaseName;
Connected := True;
end;
With FDQuery1 do
begin
Active := False;
Connection := FDConnection1;
SQL.Clear;
SQL.Add( 'CREATE TABLE IF NOT EXISTS KullaniciTablosu ( ' );
SQL.Add( 'id INT NOT NULL AUTO_INCREMENT PRIMARY KEY' );
SQL.Add( ', Kullanici_Adi VARCHAR(100) ' );
SQL.Add( ', Kullanici_ePosta VARCHAR(100) ' );
SQL.Add( ' )' );
SQL.Add( 'CHARACTER SET latin5 COLLATE latin5_turkish_ci;');
ExecSQL;
SQL.Clear;
SQL.Add( 'SELECT * FROM KullaniciTablosu' );
Active := True;
end;
{
with FDPhysFBDriverLink1 do begin
Release;
VendorLib:=App_path+'\fbembed.dll';
DriverID:='FB';
end;
with FDConnection1 do begin
Params.Clear;
Params.Add('DriverID=FB');
Params.Add('Database='+App_path+DBPath);
//Params.Add('Protocol=TCPIP');
Params.Add('Protocol=Local');
//Params.Add('Server=FBSrv'); //uses for remote connection
// Params.Add('Server=127.0.0.1');
Params.Add('User_Name=sysdba');
Params.Add('Password=masterkey');
Params.Add('CharacterSet=UTF8');
Params.Add('ExtendedMetadata=True');
Params.Add('CreateDatabase=Yes');
Connected:=True;
end; //db oluşturuldu
//tabloları oluştur
With FDQuery1 do
begin
Active := False;
Connection := FDConnection1;
SQL.Clear;
SQL.Add( 'CREATE TABLE SETTINGS ( ' );
SQL.Add( 'ID BIGINT NOT NULL PRIMARY KEY' );
SQL.Add( ', CONFKEY VARCHAR(150) ' );
SQL.Add( ', CONFVALUEEN VARCHAR(1000) ' );
SQL.Add( ', CONFVALUETR VARCHAR(1000) ' );
SQL.Add( ', CONFVALUEES VARCHAR(1000) ' );
SQL.Add( ' );' );
ExecSQL;
SQL.Clear;
SQL.Add( 'CREATE SEQUENCE SETTINGS_ID_SEQ;');
ExecSQL;
SQL.Clear;
SQL.Add('ALTER SEQUENCE SETTINGS_ID_SEQ RESTART WITH 1;');
ExecSQL;
SQL.Clear;
SQL.Add('CREATE TRIGGER SETTINGS_ID_TRG FOR SETTINGS');
SQL.Add('ACTIVE BEFORE INSERT POSITION 0');
SQL.Add('AS BEGIN');
SQL.Add('IF ((new.ID IS NULL) OR (new.ID <= 0)) THEN');
SQL.Add('BEGIN');
SQL.Add('new.ID = GEN_ID(SETTINGS_ID_SEQ, 1);');
SQL.Add('END');
SQL.Add('END');
//SQL.Add('SET TERM ; !!');
ExecSQL;
SQL.Clear;
SQL.text:=( 'INSERT INTO SETTINGS '+
'(CONFKEY,CONFVALUEEN,CONFVALUETR,CONFVALUEES) VALUES '+
'("ChannelName","Test Channel","Test Kanalı","Test Channel")' );
ExecSQL;
SQL.text:=( 'INSERT INTO SETTINGS '+
'(ID,CONFKEY,CONFVALUEEN,CONFVALUETR,CONFVALUEES) VALUES '+
'(GEN_ID(SETTINGS_ID_SEQ, 1),"ChannelTopic","Test Topic","Test Topic","Test Topic");' );
ExecSQL;
SQL.text:=( 'INSERT INTO SETTINGS '+
'(ID,CONFKEY,CONFVALUEEN,CONFVALUETR,CONFVALUEES) VALUES '+
'(GEN_ID(SETTINGS_ID_SEQ, 1),"ChannelPort","24680","","");' );
ExecSQL;
end; }
end;
{
With FDQuery1 do
begin
Active := False;
Connection := FDConnection1;
SQL.Clear;
SQL.Add( 'CREATE TABLE IF NOT EXISTS KullaniciTablosu ( ' );
SQL.Add( 'id INT NOT NULL AUTO_INCREMENT PRIMARY KEY' );
SQL.Add( ', Kullanici_Adi VARCHAR(100) ' );
SQL.Add( ', Kullanici_ePosta VARCHAR(100) ' );
SQL.Add( ' )' );
SQL.Add( 'CHARACTER SET latin5 COLLATE latin5_turkish_ci;');
ExecSQL;
SQL.Clear;
SQL.Add( 'SELECT * FROM KullaniciTablosu' );
Active := True;
end;
}
end;
procedure TfrmSpash.FormDestroy(Sender: TObject);
begin
frmSpash := nil;
end;
procedure TfrmSpash.FormShow(Sender: TObject);
begin
//Sleep(3000);
end;
procedure TfrmSpash.Timer1Timer(Sender: TObject);
const
CTimeout = 3000;
begin
if (GetTickCount - FStartTicks > CTimeout) and OKToClose then
Close;
end;
end.