12

我正在尝试将我的应用程序从 ADO 迁移到 FireDAC。我正在使用 Microsoft SQL Server。我的数据库服务器安装了排序规则 SENSITIVE CASE,并且数据库是使用排序规则 INSENSITIVE CASE 创建的。我做这个配置是因为我的客户有这个配置。但是当我尝试迁移到 FireDAC 时,FireDAC 驱动程序 (MSSQL) 会查看数据库排序规则并将属性“数据库名称”更改为大写。在那之后,很多事情都没有奏效,因为 FireDAC 没有在 sysdatabase 中找到“数据库名称”。我可以关闭这个更改“数据库名称”属性的功能吗?

4

3 回答 3

2

我猜您正在寻找MetaCaseInsCat连接参数。尝试禁用目录名称区分大小写自动检测并将其设置为不区分大小写:

...
FDConnection1.Params.Add('MetaCaseInsCat=True');
FDConnection1.Connected := True;
于 2017-07-14T01:12:09.350 回答
0

我发现 FireDAC 正在使用 ansi 大写转换来访问数据库,这反过来又会导致 MSSQL 出现问题。就我而言,它是土耳其语。我发现修复很容易。在OnBeforeConnect我使用的 TFDConnection 中:

Params.Database := TRUpperCase(Params.Database);

哪里TRUpperCase是正确将土耳其字符转换为大写的函数(如 i 转换为 İ,而不是 i 转换为 I)。

于 2015-03-26T15:42:12.407 回答
0

这不是对 OP 的直接回答,但它可能会帮助像我这样在 FireDAC 中遇到区分大小写问题的未来程序员

我将 FireDAC 与 MSSQL 一起使用。为了以不区分大小写的方式在 TFDQuery 过滤器中使用“LIKE”:TFDQuery.FilterOptions

procedure TFDQuery_MyVersion.SetFilterText(const Value: string);
begin
   FilterOptions := [TFilterOption.foCaseInsensitive];

   inherited SetFilterText(TOldDatabaseSystemToMSSQL.Filter(Value));
end;
于 2017-07-31T15:10:32.047 回答