博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在SQL语句中使用参数
阅读量:6879 次
发布时间:2019-06-27

本文共 3565 字,大约阅读时间需要 11 分钟。

在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这两个事件,其它完全可以在对象检视器中设置相应属性完成,在代码中完成相应设置会更灵活,可在运行时修改。

转载于:https://www.cnblogs.com/sun998/p/6481924.html

你可能感兴趣的文章
在DNS服务器上如何配置某个域名的指定解析
查看>>
我的友情链接
查看>>
剑指offer:树的子结构
查看>>
为什么我总是这么忧伤
查看>>
Hyper-V的备份与还原(PowerShell)
查看>>
MySQL MyISAM和InNodb备份与恢复技巧
查看>>
SplitContainer 控件扩展之收缩面板
查看>>
AD 重置密码完整脚本
查看>>
安卓的屏幕分辨率的设置
查看>>
Linux cpu性能问题排查
查看>>
linux下的端口扫描工具nmap
查看>>
AX负载均衡配置经验漫谈(1) - 健康检查
查看>>
Linux awk命令详解
查看>>
11.25 配置防盗链11.26 访问控制Directory11.27 访问控制FilesMatch
查看>>
Flask-Sqlalchemy设置时间默认值
查看>>
Android Log日志
查看>>
平面向量加法(10)
查看>>
在Linux系统中如何设置APACHE服务器里的后台页面只允许某个IP地址访问
查看>>
浅谈装饰模式
查看>>
11.PHP中的比较运算符
查看>>