一段时间以来,存储过程一直是企业应用程序开发数据访问的***方法。存储过程的安全性更高、封装能力更强,并能执行复杂的逻辑,且不会打乱应用程序代码。但是,ADO.NET参数也存在一些缺点:
◆开发者倾向于在存储过程中加入商业逻辑
◆更改过程时必须改变开发环境
◆查找过程所需的参数比较费时
◆许多时候,存储过程提供的功能超出所需
嵌入到应用程序代码中的内联SQL代码是数据访问的另一个常见方法。虽然企业在开发过程中很少用到这种方法,但许多小型项目应用这种类型的数据访问方法。应用内联SQL可以实现快速开发,但它并不具有存储过程的安全与封装优势。 #t#
参数化查询介于存储过程与内联SQL之间。它为数据访问程序开发提供一种安全、封装性的方法,并允许你利用内联ADO.NET参数的快速开发优势。 如何应用参数化查询 应用参数化查询并不那么容易。例如,下面的代码(图A)说明如何编写参数化查询:
在这个例子中,我们选择所有具有指定CustomerID的用户。注意,这个过程与在一个存储过程中编写Select语句十分相似。其不同在于你将它直接嵌入你的应用程序代码或源文件中。(我们稍后再讨论源文件。)
为使ADO.NET参数能够移植@CustomerID参数,你只需简单建立一个正常的SqlParameter并将它加入到当前命令的SqlCommand.Parameters集中。然后你就可在希望的连接上执行命令,ADO.NET参数则建立在SQL服务器上执行的命令。下面的代码片断(图B)是一个说明如何建立并执行整个命令的例子: