• 在SQL语句中使用参数


    在SQL语句中使用":参数名"的方法传入参数,效果图:

    ****************************************************************************************************

    新建空白工程,在窗体中放入一ADODataSet,三对ADODataSet,DataSource,DBGrid。

    源代码如下:

    ****************************************************************************************************

      1 unit Unit4;
      2 
      3 interface
      4 
      5 uses
      6   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      7   System.Classes, Vcl.Graphics,
      8   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.Grids,
      9   Vcl.DBGrids;
     10 
     11 type
     12   TForm4 = class(TForm)
     13     DBGrid1: TDBGrid;
     14     DBGrid2: TDBGrid;
     15     DBGrid3: TDBGrid;
     16     ADODataSet1: TADODataSet;
     17     DataSource1: TDataSource;
     18     ADODataSet2: TADODataSet;
     19     ADODataSet3: TADODataSet;
     20     DataSource2: TDataSource;
     21     DataSource3: TDataSource;
     22     ADOConnection1: TADOConnection;
     23     procedure FormCreate(Sender: TObject);
     24     procedure ADODataSet2AfterScroll(DataSet: TDataSet);
     25     procedure ADODataSet1AfterScroll(DataSet: TDataSet);
     26   private
     27     { Private declarations }
     28   public
     29     { Public declarations }
     30   end;
     31 
     32 var
     33   Form4: TForm4;
     34 
     35 implementation
     36 
     37 {$R *.dfm}
     38 
     39 procedure TForm4.ADODataSet1AfterScroll(DataSet: TDataSet);
     40 begin
     41   ADODataSet2.Active := false;
     42   ADODataSet2.Parameters.ParamByName('订单ID1').Value :=
     43     DataSet.FieldByName('订单ID').Value;
     44   ADODataSet2.Active := true;
     45 end;
     46 
     47 procedure TForm4.ADODataSet2AfterScroll(DataSet: TDataSet);
     48 begin
     49   ADODataSet3.Active := false;
     50   ADODataSet3.Parameters.ParamByName('产品ID1').Value :=
     51     DataSet.FieldByName('产品ID').Value;
     52   ADODataSet3.Active := true;
     53 end;
     54 
     55 procedure TForm4.FormCreate(Sender: TObject);
     56 begin
     57   // 连接到同一个数据库,三个ADODataSet共用一个Connection;
     58   with ADOConnection1 do
     59   begin
     60     // 连结来源的资讯及使用何种连结特性等连结字串
     61     ConnectionString :=
     62       'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demons.mdb;Persist Security Info=False';
     63     // 不弹出登录提示框
     64     LoginPrompt := false;
     65     Provider := 'Microsoft.Jet.OLEDB.4.0';
     66     // 防止其它人连接
     67     Mode := cmShareDenyNone;
     68   end;
     69   // 获取数据库中3订单表中的所有字段
     70   ADODataSet1.CommandText := 'select * from 3订单';
     71   ADODataSet1.CursorType := ctStatic;
     72   // 关联ADOConnection
     73   ADODataSet1.Connection := ADOConnection1;
     74   // 根据订单表中的订单ID获取订单明细,:变量名 表示是变量不是字段,:订单ID1可以为任意合法变量名
     75   ADODataSet2.CommandText := 'select * from 2订单明细 where 订单ID=:订单ID1';
     76   with ADODataSet2.Parameters.AddParameter do
     77   begin
     78     Name := '订单ID1';
     79     Value := NUll;
     80   end;
     81   ADODataSet2.CursorType := ctStatic;
     82   ADODataSet2.Connection := ADOConnection1;
     83   // 根据订单明细表中的产品ID获取产品明细
     84   ADODataSet3.CommandText := 'select * from 1产品 where 产品ID=:产品ID1';
     85   with ADODataSet3.Parameters.AddParameter do
     86   begin
     87     Name := '产品ID1';
     88     Value := NUll;
     89   end;
     90   ADODataSet3.CursorType := ctStatic;
     91   ADODataSet3.Connection := ADOConnection1;
     92   DataSource1.DataSet := ADODataSet1;
     93   DBGrid1.DataSource := DataSource1;
     94   DataSource2.DataSet := ADODataSet2;
     95   DBGrid2.DataSource := DataSource2;
     96   DataSource3.DataSet := ADODataSet3;
     97   DBGrid3.DataSource := DataSource3;
     98 
     99   // 连接到数据库
    100   ADODataSet1.Active := true;
    101   ADODataSet2.Active := true;
    102   ADODataSet3.Active := true;
    103 
    104 end;
    105 
    106 end.

     以上代码除了ADODataSet1AfterScroll和ADODataSet2AfterScroll这两个事件,其它完全可以在对象检视器中设置相应属性完成,在代码中完成相应设置会更灵活,可在运行时修改。

  • 相关阅读:
    [转]Nvidia 的Shadow 文章收集
    [转]Linear Depth Buffer(线性深度缓冲区)
    [转]ParallelSplit Shadow Maps on Programmable GPUs
    [转]Learning to Love your Zbuffer.
    SQL SERVER存储过程中使用事务
    VS2005+SQL2005 Reporting Service动态绑定报表(Web)
    Sql批量删除/插入
    存储过程中执行动态Sql语句
    存储过程中使用事务
    真正的全动态报表:RDLC+ReportViewer
  • 原文地址:https://www.cnblogs.com/sun998/p/6481924.html
Copyright © 2020-2023  润新知