zoukankan      html  css  js  c++  java
  • Delphi:如何将列表作为参数传递给SQL查询?

    我有一个整数或字符串列表,需要作为Delphi DataSet的参数传递.怎么做?

    这是一个例子. MyQuery是这样的:

    select * from myTable where intKey in :listParam

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

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

    并将导致此查询发送到sql server:

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

    如果解决方案也可以使用字符串,这样做会更好:

    select * from myTable where stringKey in :listParam

    成为:

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

    我相信这是一个简单的问题,但“IN”不是搜索网页的关键词.

    请回答如何在IDE中配置参数,查询以及如何传递参数.

    我使用的是Delphi 7.

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

    解决方法

    AFAIK,这是不可能的直接.

    您必须将列表转换为纯文本的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,3]);
    SQL.Text := 'select * from myTable where stringKey in '+ListToText(['a','c']);
  • 相关阅读:
    JavaScript高级-----8.函数进阶(2)
    JavaScript高级-----7.函数进阶(1)
    2014-10-18 来美半个月
    修手机记
    圆梦美利坚之三:租房记
    圆梦美利坚之二:买机票记
    Hadoop 停止Job
    IIS应用程序池数目
    HTML5 microdata
    Java sql helper[转]
  • 原文地址:https://www.cnblogs.com/jijm123/p/14099347.html
Copyright © 2011-2022 走看看