it编程 > 编程语言 > Delphi

mORMot 1.18 第23章 使用纯SQL

211人参与 2024-05-12 Delphi

mormot 1.18 第23章 使用纯sql

有时你可能不想使用orm,或者由于现有且不可更改的数据库与orm不兼容而无法使用它。在这些情况下,你仍然可以依靠mormot的其他功能,同时使用纯sql。

你可以发出纯sql命令并以json格式获取数据。下面的示例展示了如何使用快速且开源的zeos数据库库与mariadb/mysql一起执行此操作。

请注意,如何在同一台机器上的多个数据库中对表进行联接是可能的。

program listpeople;

{$apptype console}

uses
  windows, messages, sysutils, variants, classes,
  syncommons, mormot, mormotsqlite3, mormotdb,
  syndb, syndbsqlite3, syndbdataset, syndbzeos,
  synsqlite3, synsqlite3static, dateutils;

procedure list(const arawservername, adatabasename, auserid, apassword: rawutf8);
var
  propsclass: tsqldbconnectionpropertiesclass;
  aservername: rawutf8;
  u, s: rawutf8;
  props: tsqldbconnectionproperties;
  i: integer;
begin
  propsclass := tsqldbzeosconnectionproperties;
  aservername := tsqldbzeosconnectionproperties.uri(dmysql, arawservername);
  props := propsclass.create(aservername, adatabasename, auserid, apassword);
  try
    s := 'u.surname,u.givennames,u.departments, u.offices,u.phones,u.email, ' + 
         'u.homepage, p.employeeid, h.title ';
    u := props.execute('select ' + s + ' from ' + 
                       'import.users u left join ' +
                       'local.person p on p.email = u.email ' +
                       'left join local.hr h on p.nexus = h.userid ' +
                       ' where surname like ?',['engelke%']).fetchallasjson(true);
    writeln(u);
  finally
    props.free;
  end;
end;

begin
  try
    list('blah.erickengelke.com:3306', 'customers', 'userx', 'changeme23');
  except
    on e: exception do
      writeln('error: ' + e.message);
  end;
end.

你可以使用props.execute(sql).fetchallasjson来执行返回值的命令,或者使用props.executenoreturn(sql)当没有预期结果时,例如:

props.executenoreturn('delete * from users where email like ?',['erick%']);

注意:在提供的代码示例中,存在一些小错误和不一致之处,比如local.personlocal.hr可能不是有效的表名,它们仅用于示例目的。在实际应用中,需要替换为真实的数据库表名。此外,select语句中的字符串连接和字段列表也需要根据实际的数据库结构调整。代码中的?占位符用于参数化查询,以防止sql注入攻击,并且在实际执行时需要提供相应的参数值。

另外,请注意executenoreturn用于执行不返回结果的sql语句,如deleteupdateinsert等。而execute方法则用于执行返回结果的查询,并通过fetchallasjson方法将结果转换为json格式。在实际应用中,确保正确处理异常和错误情况,以保证代码的健壮性和稳定性。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Quick Logger 强大的企业级异步记录器

05-12

mORMot 1.18 第19章 安全性

05-12

mORMot 1.18 第18章 使用REST/JSON的客户端/服务器

05-12

mORMot 1.18 第13章 动态数组

05-12

mORMot 1.18 第12章 Blobs(大二进制对象)

05-12

mORMot 1.18 第11章 JSON - JavaScript对象表示法

05-12

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论