我正在用Delphi XE开发应用程序。我有许多长SQL查询,我不想像下面这样将它们存储在代码中,因为这种方法降低了代码的可读性:
CONST_SQL1 = 'SELECT ... FROM ..'#13#10 + 'WHERE ...';
也许创建DataModule并将SQL查询存储在备注组件中是另一种选择。这样,SQL查询将比上面的方法更具可读性,但这样,我必须在DataModule中添加许多备注组件,如Memo_SQL1、Memo_SQL2、Memo_SQL3、.
另外,我不想将这些SQL查询存储在单独的文件或数据库中。
是否有一个组件可以存储所有这些SQL查询,或者您在本例中的最佳实践是什么?
发布于 2022-05-05 13:55:39
我会为每个查询寻找一个(文本)资源文件。这使得跟踪源代码管理系统中的更改变得更加容易。
在项目目录中为SQL文件添加一个子文件夹,并将它们添加到rc文件中,如下所示:
SQL1 TEXT .\SQL\SQL1.sql
SQL2 TEXT .\SQL\SQL1.sql
将rc-文件添加到项目中,您就可以将SQL文本直接加载到TQuery的SQL成员中,就像
program Project2;
{$APPTYPE CONSOLE}
{$R *.res}
{$R 'SQLQueries.res' 'SQLQueries.rc'}
uses
Windows,
Data.SqlExpr,
Classes;
var
ResourceStream: TResourceStream;
Query: TSQLQuery;
begin
ResourceStream := TResourceStream.Create(HInstance, 'SQL1', 'TEXT');
Query:= TSQLQuery.Create(nil);
try
Query.SQL.LoadFromStream(ResourceStream);
Writeln(Query.SQL.Text);
ReadLn;
finally
Query.Free;
ResourceStream.free;
end;
end.
https://stackoverflow.com/questions/72068007
复制相似问题