前言
一直用ASP+ACCESS来编写网页和公司的内部应用系统,内部应用系统也就是大家说的OA吧,这个我也不知道,公司又叫它ERP,反正不管什么,它是用来帮助公司处理日常工作的,简化劳动的.从来没用过存储过程,所有的添加,删除,修改都是在ASP里面写程序执行,代码很多.数据量少的时候没什么感觉,挺快的,可等到数据量大的时候,上W条记录查询,尤其是不分页都显示在一页里的时候情况就出现了,速度很慢,要10几秒才有反应,所以想到了要用SQL的存储过程来简化代码和加快程序的执行速度!
在学习了51JS里的一篇教程SQL SERVER数据库开发之存储过程应用 又在QQ里大侠的指导下终于有点入门,下边是我的学习笔记,有问题欢迎大家一起讨论!~
1.ASP调用存储过程
首先在SQL里建立一个数据库叫it,怎么建我就不说了,这个简单,一看就知道了。然后在库里建个表,写几个数据记录,如下:
打开查询分析器:
在里边写下如下语句点击绿色按钮执行它:
你到数据库的存储过程里面看,已经多了一个名为upGetUserName的存储过程了表明已经成功的建立了存储过程,如果没有,试着刷新下。
下面用ASP来调用它: CONN文件(连接数据库)如下:复制代码 代码如下: <% set db=server.createobject("adodb.connection") db.Open ("driver={SQL Server};server=192.168.18.254;uid=sa;pwd=;database=it;") %> 192.168.18.254为SQL SERVER服务器的IP地址,uid pwd it 分别为连接数据库的用户和密码及所要连的数据库 新建一个index.asp文件,内容如下: 复制代码 代码如下: <!--#include file="conn.asp" --> <% set rs=server.createobject("adodb.recordset") sql = "exec upGetUserName" rs.open sql,db,3,2 response.write rs.recordcount&"<br>" while not rs.eof response.write rs("uname")&"<br>" rs.movenext wend response.End %>
在浏览器中执行这个页面如果显示如下:
那么恭喜你,成功了! 上面是不带参数的存储过程调用,但我们在使用中一定会有参数的,下面就来介绍一个有参数的。 还是上边的例子,我们把原来的存储过程改成这样:复制代码 代码如下: CREATE PROC upGetUserName @intUserId NVARCHAR(50), @intUserpass NVARCHAR(50) AS BEGIN SELECT uname FROM users WHERE uId=@intUserId and pass=@intUserpass END GO 可以把原来的存储过程删除,然后把这个写在查询分析器里来执行,也可以直接在原来的存储过程里改。 @intUserId NVARCHAR(50), @intUserpass NVARCHAR(50) 是要传送进来的参数,@是必须的,因为有两个,所以之间用“,”来分隔 index文件改成如下 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行 ]
注意: sql = "exec upGetUserName 'snake','snake'" 两个snake不是一个意思,一个是uid,一个是pass,存储过程返回的是uid="snake"并且pass="snake"的记录 数据库里只有一条这样的记录,所以会显示:
OK,你已经入门了!就这么简单!
前言
一直用ASP+ACCESS来编写网页和公司的内部应用系统,内部应用系统也就是大家说的OA吧,这个我也不知道,公司又叫它ERP,反正不管什么,它是用来帮助公司处理日常工作的,简化劳动的.从来没用过存储过程,所有的添加,删除,修改都是在ASP里面写程序执行,代码很多.数据量少的时候没什么感觉,挺快的,可等到数据量大的时候,上W条记录查询,尤其是不分页都显示在一页里的时候情况就出现了,速度很慢,要10几秒才有反应,所以想到了要用SQL的存储过程来简化代码和加快程序的执行速度!
在学习了51JS里的一篇教程SQL SERVER数据库开发之存储过程应用 又在QQ里大侠的指导下终于有点入门,下边是我的学习笔记,有问题欢迎大家一起讨论!~
1.ASP调用存储过程
首先在SQL里建立一个数据库叫it,怎么建我就不说了,这个简单,一看就知道了。然后在库里建个表,写几个数据记录,如下:
打开查询分析器:
在里边写下如下语句点击绿色按钮执行它:
你到数据库的存储过程里面看,已经多了一个名为upGetUserName的存储过程了表明已经成功的建立了存储过程,如果没有,试着刷新下。
下面用ASP来调用它: CONN文件(连接数据库)如下:复制代码 代码如下: <% set db=server.createobject("adodb.connection") db.Open ("driver={SQL Server};server=192.168.18.254;uid=sa;pwd=;database=it;") %> 192.168.18.254为SQL SERVER服务器的IP地址,uid pwd it 分别为连接数据库的用户和密码及所要连的数据库 新建一个index.asp文件,内容如下: 复制代码 代码如下: <!--#include file="conn.asp" --> <% set rs=server.createobject("adodb.recordset") sql = "exec upGetUserName" rs.open sql,db,3,2 response.write rs.recordcount&"<br>" while not rs.eof response.write rs("uname")&"<br>" rs.movenext wend response.End %>
在浏览器中执行这个页面如果显示如下:
那么恭喜你,成功了! 上面是不带参数的存储过程调用,但我们在使用中一定会有参数的,下面就来介绍一个有参数的。 还是上边的例子,我们把原来的存储过程改成这样:复制代码 代码如下: CREATE PROC upGetUserName @intUserId NVARCHAR(50), @intUserpass NVARCHAR(50) AS BEGIN SELECT uname FROM users WHERE uId=@intUserId and pass=@intUserpass END GO 可以把原来的存储过程删除,然后把这个写在查询分析器里来执行,也可以直接在原来的存储过程里改。 @intUserId NVARCHAR(50), @intUserpass NVARCHAR(50) 是要传送进来的参数,@是必须的,因为有两个,所以之间用“,”来分隔 index文件改成如下 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行 ]
注意: sql = "exec upGetUserName 'snake','snake'" 两个snake不是一个意思,一个是uid,一个是pass,存储过程返回的是uid="snake"并且pass="snake"的记录 数据库里只有一条这样的记录,所以会显示:
OK,你已经入门了!就这么简单!