gpt4 book ai didi

postgresql - Typhon IDE 上的 TZQuery 只返回 6 个字段,而它应该返回 8 个字段

转载 作者:行者123 更新时间:2023-11-29 13:56:44 24 4
gpt4 key购买 nike

我正在使用 Typhon IDE(v.5.1 和 FPC v.2.7.1)并创建用户登录功能,使用 PostgreSQL 9.3 作为数据库,使用 Zeos 7.2 作为数据连接器。

我有以下代码:

   // ZQ: TZQuery;    
zq := ExecSQL('SELECT '+
'role_name, '+
'role_enabled, '+
'uid, '+
'role_uid, '+
'user_name, '+
'enabled, '+
'full_name, '+
'user_email '+
'FROM vw_usr_users '+
'where user_name = '+QuotedStr(AUserName)+' and enabled = ''Y'' and user_password = md5('+QuotedStr(APassword)+');');
ShowDebugSQL(zq.SQL);
ShowMessage(IntToStr(zq.FieldCount));
ShowMessage(zq.FieldByName('role_uid').AsString);
if not zq.IsEmpty then
begin
if zq.FieldByName('role_uid').AsString = '' then
begin
MessageDlg('Error','User have no role...',mtError, [mbOK], 0);
end
else
begin
Self.FId:=zq.FieldByName('uid').AsString;
Self.FUserName:=AUserName;
Self.FPassword:=APassword;
Self.fEnabled:= zq.FieldByName('enabled').AsString = 'Y';
Self.fRoleID:=zq.FieldByName('role_uid').AsString;
Self.FRoleName:=zq.FieldByName('role_name').AsString;
Self.FFullName:= zq.FieldByName('full_name').AsString;
Self.FEmail:= zq.FieldByName('user_email').AsString;
Self.Log(LOG_ACTIVITY_LOGIN);
Result := True;
end;
end
//......
  • ExecSQL 是一个辅助函数,创建 TZQuery 实例,分配连接和 SQL,然后打开它。

当我运行上面的代码时,我收到错误消息,指出未找到字段“role_uid”。

field 'role_uid' not found

ShowMessage(IntToStr(zq.FieldCount));

只显示 6 个字段,但我制作的助手 ShowDebugSQL 是为了在备忘录中显示 SQL

ShowDebugSQL(zq.SQL);

给了我预期的 SQL

full SQL

和我在 pgAdmin 上测试的正确结果: pgAdmin shows 8 fields

我已经使用循环测试了结果字段列表并且只得到了 6 个字段。请帮我指出我的代码有什么问题。非常感谢。

最佳答案

Zeos 不识别 UUID 类型的 PostgreSQL 字段。UUID 字段必须类型转换为character varying(36) 才能在 Zeos 数据集上可用。

zq := Query('SELECT '+
'role_name, '+
'role_enabled, '+
//---------------------------
'uid::varchar(36) as uid, '+
'role_uid::varchar(36) as role_uid, '+
//---------------------------
'user_name, '+
'enabled, '+
'full_name, '+
'user_email '+
'FROM vw_usr_users '+
'where user_name = '+QuotedStr(AUserName)+' and enabled = ''Y'' and user_password = md5('+QuotedStr(APassword)+');', False);

关于postgresql - Typhon IDE 上的 TZQuery 只返回 6 个字段,而它应该返回 8 个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273876/

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