gpt4 book ai didi

delphi - 使用 Zeoslib 确定参数化查询中的参数数据类型

转载 作者:行者123 更新时间:2023-12-03 15:32:10 25 4
gpt4 key购买 nike

是否可以使用 Zeoslib 和 Firebird 确​​定参数化查询中的参数数据类型?

我正在从 FibPlus 迁移到 Zeoslib。

带有类似“从注册成员(member)中选择名字、姓氏、年龄 > :since 和国籍 = :country”的声明

使用 FibPlus 我这样做:

  for i := 0 to Q1.Params.Count - 1 do
begin

t := Q1.Params[i].ServerSQLType;

case t of
SQL_TYPE_DATE, SQL_TYPE_DATE + 1:
begin
with TsDateEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;
sql_short, sql_long, sql_int64, sql_short + 1, sql_long + 1, sql_int64 + 1:
begin
with TsSpinEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;
....

使用 Zeoslib 我尝试过:

  for i := 0 to Q1.Params.Count - 1 do
begin

if Q1.Params[i].DataType = ftDate then
begin
with TsDateEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;

if Q1.Params[i].DataType in [ftInteger, ftShortInt, ftLargeInt, ftLongWord] then
begin
with TsSpinEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;
....

但 Q1.Params[i].DataType 始终为 ftUnkown。

最佳答案

您无法使用婴儿车执行此操作,因为它们此时尚未设置。我建议您使用 TZSQLMetadata;

  ZSQLMetadata1 := TZSQLMetadata.Create(Self);
try
ZSQLMetadata1.Connection := ZConnection1; //Your connection to db
ZSQLMetadata1.MetadataType := mdColumns; //What kind of meta data get you want column types so we get columns metadata
ZSQLMetadata1.TableName := 'MYTABLE'; //from which table metadata to get
ZSQLMetadata1.Open;

//After open ZSQLMetadata1 rows contains information about table columns
while not ZSQLMetadata1.Eof do
begin
if ZSQLMetadata1.FieldByName('TYPE_NAME').AsString = 'char' then
begin
//Do something
end;

{ if you do not like working with strings
if ZSQLMetadata1.FieldByName('DATA_NAME').AsInteger = 9 then
begin
//Do something
end;
}
ZSQLMetadata1.Next;
end;
finally
ZSQLMetadata1.Free;
end;

ZSQLMetadata1 的工作方式类似于数据集,您可以将其分配给数据源并查看 dbgrid 中的所有列和值

/编辑/列名和字段值是数据库特定的,我的示例是在 MySQL 数据库上

关于delphi - 使用 Zeoslib 确定参数化查询中的参数数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33053123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com