无法使用 FireDAC TFDQuery 保存或加载外来字符

问题描述 投票:0回答:0

我有一个 SQLite 数据库配置为:

SQLiteFDConnection->Params->Values["StringFormat"]=_D("Unicode");
SQLiteFDConnection->Params->Values["OpenMode"]=_D("CreateUTF8");

它有两个表通过

TFDQuery
访问:

A)

Table1
(
TFDQuery
) 具有持久字段并使用
TDataSource
显示
TDBGrid
.

中的项目

B)

Table2
(
TFDQuery
) 也有持久字段。

Table1
有效,它正确显示外来字符,并且持久字段设置为使用
TWideStringField
.

Table2
的字段也是一个
TWideStringField
,直接使用
Table2
ExecSQL()
INSERT INTO
UPDATE
语句。对于回读,它使用
TFDQuery::Open()
然后
FieldByName()
。然而,外来字符只是问号。

我的问题是,既然我将

StringFormat
设置为
Unicode
,为什么
Table2
没有正确使用Unicode?

更新用途:

SQLiteDataModule->Table2->ExecSQL("UPDATE Table2 SET Name=:N where UniqueId=:U",
                 OPENARRAY(Variant, (UnicodeStringVarName, UniqueId)));

读回来在

Select * from Table2
中使用
SQLiteDataModule->Table2->Open()

String Name=SQLiteDataModule->Table2->FieldByName("Name")->AsString;

一个问题是我无法将调试信息输出到事件窗口并显示正确的字符。我想在

Update
查询之前检查它,但它总是显示
?? ??
(有4个字符)。
Name
TTreeNode
中使用,如果我使用普通字符串,我可以看到外来字符,因此在存储和加载它之间的某个地方会产生
?? ??
.

字符串是一个

UnicodeString
.

有什么想法吗?

sqlite c++builder firedac
© www.soinside.com 2019 - 2024. All rights reserved.