动态SQL语句中的参数,我们可以通过两种途径来为它赋值:
1.利用参数编辑器(Parameter Editor)来为参数赋值
具体方法是:选中TQuery部件,单击鼠标右键,然后从中选择Define Parameters便可以打开参数编辑器。
例如,在TQuery部件的SQL属性中我们设置如下的SQL语句:
Setect * From Customer Where CustNO=:Number;
TQuery的DatabaseName属性为DBDEMOS,其中Number为参数变量。我们便可以为参数Number赋值,在Datetype组合框中选择该参数的数据类型为整数Integer,在Value编辑框中可以为参数Number赋一个值,也可以单击Null Value检查框为参数Number赋一个空值Null。给参数赋值之后,单击OK按钮,这样TQuery部件中的SQL 查询便准备好了,而且参数值也被赋给了动态SQL语句中相应的参数,此时当把TQuery 部件的Active属性设置成True时,在与TQuery部件相连的数据浏览部件中会显示出查询结果,通过参数编辑器为参数赋值,这种方式缺乏应有的灵活性,在实际应用中用得较少,在实际应用中程序设计人员希望用更灵活方便的方式为参数赋值,那就是我们接下来要介绍的另一种途径:
2.在运行过程中,通过程序为参数赋值
用这种方式为参数赋值有三种方法:
①根据参数在SQL语句中出现的顺序,设置TQuery部件的Params属性值为参数赋值。
②直接根据SQL语句中各参数的名字,调用ParamByName方法来为各参数赋值。
③将TQuery部件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TQuery部件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。
这三种方法我们将在下面的三小节中具体地介绍
17.4.1 使用Params属性为参数赋值
TQuery部件具有一个Params属性,它们在设计时不可用,在程序运行过程中可用,并且是动态建立的,当为TQuery部件编写动态SQL 语句时, Delphi 会自动地建立一个数组Params,数组Params是以0下标开始的,依次对应动态SQL 语句中的参数, 也就是说动态SQL语句中第一个参数对应Params[0],第二个参数对应params[1],依此类推。
例如:一个TQuery部件Query1,我们为它编写的动态SQL语句是:
Insert Into Customer(CustNo,Name,Country)
Values(:CustNo,:Name, : Country)
对于上述这条动态SQL语句中的参数,我们可以利用TQuery部件的params 属性为参数赋值:
Query1.params[0].AsString := "1988";
Query1.params[1].AsString := "Lichtenstein";
Query1.params[2].AsString := "USA";
上述语句将把"1988"赋给参数:Cuse_No,"Lichtenstein"赋给参数:Name,"USA"赋给参数:Country。