使用FireDac(Delphi)在Firebird中创建数据库

问题描述 投票:4回答:1

我最近从AnyDac更改为FireDac(8.0.5.3365)。我们正在运行Delphi 2006。

当我使用此组件的AnyDac版本时,可以通过以下操作创建一个新的数据库。

设置我的连接

fConnection.LoginPrompt := false;
fConnection.ResourceOptions.SilentMode := true;

fConnection.Params.Clear;
fConnection.Params.Add(Format('DriverID=%s',          ['IB']));
fConnection.Params.Add(Format('Database=%s',          [fConnectionInfo.xDatabase]));
fConnection.Params.Add(Format('CharacterSet=%s',      ['UTF8']));
fConnection.Params.Add(Format('user_name=%s',         [fConnectionInfo.xUserName]));
fConnection.Params.Add(Format('password=%s',          [fConnectionInfo.xPassword]));
fConnection.Params.Add(Format('ExtendedMetadata=%s',  ['True']));
fConnection.Params.Add(Format('CreateDatabase=%s',    ['Yes']));
fConnection.Params.Add(Format('Protocol=%s',          ['Local']))

//database path = C:\Users\LoginName\AppData\Local\AppName\TestDB.FDB

打开和关闭连接

fConnection.Open;
fConnection.Close;

然后,我可以在现有数据库上运行我的创建表sql脚本。

但是现在当我使用FireDac版本执行此操作时,Open命令会引发fbe_unavailable错误,好像我没有指定CreateDatabase参数。

我应该以其他方式这样做吗?

感谢您的时间。

科里。

delphi firebird firedac
1个回答
2
投票

您在http://docwiki.embarcadero.com/RADStudio/Rio/en/Executing_SQL_Scripts_%28FireDAC%29中有完整的示例

例如,以下Firebird脚本创建一个数据库,并且可以使用TFDScript执行:

SET SQL DIALECT 3;
SET NAMES UTF8;
SET CLIENTLIB 'C:\fb25\bin\fbclient.dll';
CREATE DATABASE 'E:\Test2.ib'
  USER 'sysdba' PASSWORD 'masterkey'
  PAGE_SIZE 16384
  DEFAULT CHARACTER SET NONE;

SET TERM ^ ;

CREATE PROCEDURE MY_PROC RETURNS (aParam INTEGER) AS
BEGIN
  aParam = 10;
END^

您应该使用CreateDatabase = Yes连接定义参数除其他必需参数外:http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Firebird_(FireDAC)

© www.soinside.com 2019 - 2024. All rights reserved.