3

使用下面的 SQL 创建 Firebird 数据库时,它不遵循指定的默认排序规则。但是,如果我在创建数据库后更改默认排序规则,它就可以工作。

这将创建一个默认排序规则为 UTF8 的数据库。我尝试省略 CharacterSet 的参数,但这将创建一个没有字符集的数据库,而不是 sql 语句提供的字符集。

编辑:添加组件设置

fConnection.Params.Add(Format('DriverID=%s',          ['IB']));
fConnection.Params.Add(Format('Database=%s',          [vDBFile]));
fConnection.Params.Add(Format('CharacterSet=%s',      ['UTF8']));
fConnection.Params.Add(Format('user_name=%s',         ['sysdba']));
fConnection.Params.Add(Format('password=%s',          ['masterkey']));
fConnection.Params.Add(Format('ExtendedMetadata=%s',  ['True']));
fConnection.Params.Add(Format('CreateDatabase=%s',    ['Yes']));
fConnection.Params.Add(Format('Protocol=%s',          ['TCPIP']));
fConnection.Params.Add(Format('Server=%s',            [pInfo.xServer]));

vScript := TADScript.Create(nil);
vScript.Connection := fConnection;
vScript.Transaction := fTransaction;

vScript.SQLScripts.Add.SQL.Text := 
    {leaving out quotes for readability}
    SET SQL DIALECT 3;
    SET CLIENTLIB 'c:\Firebird\fbclient.dll';
    CREATE DATABASE 'TEST'
      USER 'sysdba' PASSWORD 'masterkey'
      PAGE_SIZE 16384
      DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI;

vScript.ValidateAll;
vScript.ExecuteAll;

创建数据库后执行以下SQL会将默认排序规则更改为UNICODE_CI_AI

ALTER CHARACTER SET UTF8 SET DEFAULT COLLATION UNICODE_CI_AI

我应该使用什么 SQL 以便在创建数据库时正确设置默认排序规则?

我目前正在使用 Firebird 2.5.5 并使用 AnyDac 组件从 Delphi 2006 访问它。

4

0 回答 0