• λ我爱Aspx >> C#.Net >> 在 Access 中使用“存储过程”_ASP技巧
  • 在 Access 中使用“存储过程”_ASP技巧

  • :aspxer  Դ:internet  :2007-4-28 23:44:59  ؼ: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 语句后保存并命名。

    Ҷƪл˵?
  • һƪ用XML和SQL 2000来管理存储过程调用_XML技巧
    һƪ使用SQLSERVER的扩展存储过程实现远程备份与恢复_数据库技巧