gpt4 book ai didi

sql - Delphi:如何将列表作为参数传递给 SQL 查询?

转载 作者:行者123 更新时间:2023-12-03 14:37:39 25 4
gpt4 key购买 nike

我有一个整数或字符串列表,需要将其作为 Delphi 数据集的参数传递。怎么做?

这是一个例子。 MyQuery 类似于:

select * from myTable where intKey in :listParam

我将参数设置为列表或数组或其他内容:

MyQuery.ParamByName('listParam').AsSomething := [1,2,3];

这会导致此查询发送到 SQL 服务器:

select * from myTable where intKey in (1, 2, 3)

如果解决方案也可以使用字符串,进行以下查询,那就更好了:

select * from myTable where stringKey in :listParam

成为:

select * from myTable where stringKey in ('a', 'b', 'c')

我认为这是一个简单的问题,但“IN”并不是搜索网络的好关键字。

请回答我应该如何在IDE中配置参数,查询以及如何传递参数。

我使用的是 Delphi 7。

已编辑:我正在考虑答案是“不可能直接做到”。如果有人给我一个非黑客的答案,接受的答案将被更改。

最佳答案

据我所知,这是不可能直接实现的。

您必须将该列表转换为纯文本的 SQL 列表。

例如:

function ListToText(const Args: array of string): string; overload;
var i: integer;
begin
result := '(';
for i := 0 to high(Args) do
result := result+QuotedStr(Args[i])+',';
result[length(result)] := ')';
end;


function ListToText(const Args: array of integer): string; overload;
var i: integer;
begin
result := '(';
for i := 0 to high(Args) do
result := result+IntToStr(Args[i])+',';
result[length(result)] := ')';
end;

这样使用:

SQL.Text := 'select * from myTable where intKey in '+ListToText([1,2,3]);
SQL.Text := 'select * from myTable where stringKey in '+ListToText(['a','b','c']);

关于sql - Delphi:如何将列表作为参数传递给 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10091777/

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