PDA

View Full Version : مشکل Connect شدن به FireBird



کامروا
پنج شنبه 12 مرداد 1391, 13:25 عصر
سلام

بنده از FireBird Embedded استفاده میکنم.

در root فایل اجرایی ، فایل های زیر رو در کنار app.exe قرار دادم:



c:\myapp\app.exe
c:\myapp\fbclient.dll
c:\myapp\icudt30.dll
c:\myapp\icuin30.dll
c:\myapp\icuuc30.dll
c:\myapp\dbxfb.dll


برای اتصال به دیتابیس GHARARDAD.FDb از کد زیر استفاده کردم.
procedure TMainForm.Button1Click(Sender: TObject);
var Con: TSQLConnection;
begin
Con := TSQLConnection.Create(Self);
With Con Do
Begin
DriverName := 'FirebirdConnection';
Params.Add('User_Name=SYSDBA');
Params.Add('Password=masterkey');
Params.Add('Database=C:\GHARARDAD.FDB');
GetDriverFunc := 'getSQLDriverInterBase';
LibraryName := 'dbxfb.dll';
VendorLib := 'fbclient.dll';
Connected := True;
End;
End;



اما با خطای زیر روبرو میشم :

http://www.jdaneshju.com/up/images/47y46asnvou4a5bi9zuq.jpg

ممنون میشم بگین مشکلم کجاست...

تشکر

BORHAN TEC
پنج شنبه 12 مرداد 1391, 15:12 عصر
سلام
همانطور که مشخه دلفی از fbClient.dll داره ایراد میگیره. چند تا احتمال وجود داره:
1- در نسخه embeded فایل fbembed.dll را باید ه fbclient.dll تغییر نام بدین و از اون استفاده کنید.
2- باید به نسخه firebird هم توجه داشته باشید. به عنوان مثال دلفی 2010 (اگه درست یادم مونده باشه) از firebird 2.5 پشتیبانی نمی کنه و نهایتاً تا نسخه 2.1 فایربرد رو ساپورت می کنه.
3- در ضمن کدت هم اشتباهه و باید به شکل زیر نوشته بشه:
procedure TForm1.Button1Click(Sender: TObject);
var Con: TSQLConnection;
begin
Con := TSQLConnection.Create(Self);
With Con Do
Begin
DriverName := 'Firebird';
Params.Values['User_Name'] := 'sysdba';
Params.Values['Password'] := 'masterkey';
Params.Values['Database'] :='C:\GHARARDAD.FDB';
GetDriverFunc := 'getSQLDriverInterBase';
Params.Values['LibraryName'] := 'dbxfb.dll';
Params.Values['VendorLib'] := 'fbclient.dll';
Connected := True;
End;
end;

کامروا
پنج شنبه 12 مرداد 1391, 15:36 عصر
ممنون آقای عشایری عزیز

از دلفی XE2 و FB 2.5.1 Embdded استفاده میکنم.(آیا XE2 از FB 2.5.1 پشتیبانی میکنه؟)

فایل fbembed.dll رو به fbclient.dll تغییر دادم.

زمانی که کد های شما استفااده میکنم خطای زیر رو میده:

http://www.jdaneshju.com/up/images/wlu83t0ow5kylaoodhmk.jpg

BORHAN TEC
پنج شنبه 12 مرداد 1391, 16:05 عصر
من شخصاً کد زیر رو نوشتم و تست هم کردم و بدون هیچ عیبی اجرا شد:
unit Unit1;

interface

uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Data.DB,
Data.SqlExpr,
Vcl.StdCtrls,
Data.DBXFirebird,
Datasnap.DBClient,
SimpleDS,
Vcl.Grids,
Vcl.DBGrids;

type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

var
Con: TSQLConnection;
SDS: TSimpleDataset;
DS: TDataSource;
CDS: TClientDataSet;

procedure TForm1.Button1Click(Sender: TObject);
begin
Con := TSQLConnection.Create(Self);
With Con Do
Begin
DriverName := 'Firebird';
Params.Values['User_Name'] := 'sysdba';
Params.Values['Password'] := 'masterkey';
Params.Values['Database'] := 'C:\GHARARDAD.FDB';
GetDriverFunc := 'getSQLDriverInterBase';
Params.Values['LibraryName'] := 'dbxfb.dll';
Params.Values['VendorLib'] := 'fbclient.dll';
LoginPrompt := False;
End;

SDS := TSimpleDataset.Create(Self);
with SDS do
begin
Connection := Con;
DataSet.CommandType := ctQuery;
DataSet.CommandText := 'select * from modules';
end;

DS := TDataSource.Create(Self);
with DS do
begin
DataSet := SDS;
end;

DBGrid1.DataSource := DS;

SDS.Open;
end;

end.

کامروا
پنج شنبه 12 مرداد 1391, 16:09 عصر
بله مرسی آقای عشایری درست شد.

خیلی عالی...

سوال در مورد BackUp , Restore هم دارم که الان تاپیک میزنم :لبخندساده:

تشکر