我爱Aspx >> C#.Net >> 在 Access 中使用“存储过程”_ASP技巧好,下面说说 Access 的存储过程的特点。
Access 的查询,我目前的感觉是对 SQL 语句的一个包装,或许进行了某种优化如预编译。我们不能像写 SQL Server 存储过程那样使用多重操作,事务,逻辑判断,循环等等……
但是我们使用 Access 存储过程的主要目的,就是使用参数额外提供的查询,使用存储过程,我们不必再面对将参数值拼接到 SQL 语句字符串中时遇到的各种麻烦,比如:
代码:
Dim sql
sql = "SELECT * FROM Users WHERE UserName = '" & userName & "'"
以上代码中,如果字符串变量 userName 中含有“'”单引号,则会报错。我们必须手工转化:
代码:
Dim sql
sql = "SELECT * FROM Users WHERE UserName = '" & Replace(userName, "'", "''") & "'" '转化为连续两个单引号
而使用带参数查询,我们的 SQL 语句可以写为:
代码:
Dim sql
sql = "SELECT * FROM Users WHERE UserName = @userName"
然后把参数 @userName 的值以 Command 对象的 Parameter 属性来传入即可,很方便直观。
代码:
With cmd
'创建参数对象
.Parameters.Append .CreateParameter("@userName")
'给各参数指定值
.Parameters("@userName") = userName
End With
这里还要说明 Access 存储过程中参数的使用。和 SQL Server 的存储过程中用 @ 变量指定参数,然后同名传入参数对象不同,Access 中的参数,是以“顺序”而非“名字”来识别的。传入的参数无需指定名字,随便起,SQL 中的参数名字也可以随便起,只要传入参数值时,按照 SQL 语句中的参数出现顺序指定就行了。通常,我们使用 Command 对象的 Execute 方法,直接传入参数值数组来执行~
代码:
cmd.Execute , Array(userName)
再比如,你的一个 Access 存储过程这么写:
代码:
select * from Users where UserName = p_UserName and BookTitle = p_bookTitle
你可以就这么执行,通过传入参数值数组,但是顺序要对应:
代码:
cmd.Execute , Array(userName, bookTitle)
OK,看看我们的例子中使用的两个查询,一个是写入数据。写好 SQL 语句后保存并命名。

ASP.NET结合存储过程写的通用搜索..[04-28]
ASP中存储过程调用的两种方式及比..[04-28]
一些不长见的ASP调用存储过程的技..[04-28]
各种存储过程使用指南_ASP实例[04-28]
IBatisNet系列-执行存储过程_ASP..[04-28]
asp.net(C#)海量数据表高效率分页..[04-28]
一个简单的用存储过程分页_ASP技..[04-28]
无限级分类的非递归实现(存储过程..[04-28]
使用Data Access Application Bl..[04-28]
asp.net调用存储过程方法新解_AS..[04-28]
使用SQLSERVER的扩展存储过程实现..[04-28]
用PHP调用Oracle存储过程_PHP技巧[04-28]
内嵌或嵌入SQL和存储过程之对比_..[04-28]
在VB.NET中使用MS Access存储过程..[04-28]
ASP.NET结合存储过程写的通用搜索..[04-28]
存储过程编写经验和优化措施_数据..[04-28]
浅析SQL SERVER一个没有公开的存..[04-28]
使用存储过程时一个错误的解决方..[04-28]
ASP中存储过程调用的两种方式及比..[04-28]
一些不长见的ASP调用存储过程的技..[04-28]