|
|
| Asp深度揭密(3) |
| 作者:不详 来源:不详 发布时间:2006-8-13 0:23:47 发布人:chinazhan |
减小字体
增大字体
'使用command调用带两个输入参数和返回值的存储过程 'CREATE PROCEDURE [return_1] '(@user_name varchar(40)) 'AS 'if exists(select id from user_info where user_name=@user_name) 'return 1 'else 'return 0 response.write "<br>调用带两个输入参数和返回值的存储过程:<br>" set cmd=server.createobject("adodb.command") cmd.activeconnection=conn cmd.commandtype = adcmdstoredproc cmd.commandtext = "return_1" cmd.parameters.append cmd.createparameter("@return_value",adinteger,adparamreturnvalue) cmd.parameters.append cmd.createparameter("@user_name",advarchar,adparaminput,40) cmd.parameters.append cmd.createparameter("@password",advarchar,adparaminput,20) cmd("@user_name")="tuth" cmd("@password")="yyuyu" cmd.execute() rrr=cmd("@return_value") response.write rrr set cmd=nothing conn.close set conn=nothing %> 效果: 访问http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password=ttt时,出现如下 普通的调用方法: 12 返回纪录集,可以使用recordcount等属性: ahyi tet tuth 调用带输出参数的存储过程: 2 调用带两个输入参数和返回值的存储过程: 1 注意:若存储过程无参数,则调用的sql语句直接为存储过程名,一个参数为“存储过程名 参数”,若是多个参数,则“存储过程名 参数1,参数2,……,参数n”;如果在sql语句中加入exec,则在返回的记录集中可以使用recordcount等属性;如果想获得存储过程的返回值或输出参数,可以使用command对象。 ⑵.使用事务处理 ①.Asp内嵌的事务支持 例子: use_transaction_1.asp <% 'Asp中使用事务 Set conn=Server.CreateObject("ADODB.Connection") conn.Open "course_dsn","course_user","course_password" conn.begintrans '开始事务 sql="delete from user_info" set rs=server.createobject("adodb.recordset") rs.open sql,conn,3,3 if conn.errors.count>0 then '有错误发生 conn.rollbacktrans '回滚 set rs=nothing conn.close set conn=nothing response.write "交易失败,回滚至修改前的状态!" response.end else conn.committrans '提交事务 set rs=nothing conn.close set conn=nothing response.write "交易成功!" response.end end if %> ②.数据库级的事务 i.创建存储过程 CREATE PROCEDURE [user_info_2] (@user_name varchar(40),@password varchar(20)) AS SET XACT_ABORT ON BEGIN TRANSACTION delete from user_info where user_name=@user_name and password=@password COMMIT TRANSACTION SET XACT_ABORT OFF ii.在Asp中调用 use_transaction_2.asp <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open "course_dsn","course_user","course_password" sql="user_info_2 '"&request.querystring("user_name")&"','"&request.querystring("password")&"'" set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 set rs=nothing conn.close set conn=nothing %> 讨论:两种方式的优劣? ⑶.使用视图 在数据库中定义好视图之后,在Asp中如同使用一个表一样来使用视图 4.一个数据库分页的例子 db_page.asp <% on error resume next Set conn=Server.CreateObject("ADODB.Connection") '创建连接数据库的对象 conn.Open "course_dsn","course_user","course_password" '使用该对象连接数据库 set rs=server.createObject("adodb.recordset") sql="select * from user_info order by id desc" rs.open sql,conn,1,1 if rs.recordcount>0 then '如果有记录 rs.pagesize=2 '每页最多显示2条纪录 '从URL获取当前要显示的页 page=cint(request("page")) '页面参数异常处理 if page="" then page=1 if page<1 then page=1 if page>= rs.pagecount then page=rs.pagecount rs.absolutepage=page '当前页为page参数指定的页 for i=1 to rs.pagesize '根据pagesize参数的大小循环显示当前页中的纪录 response.write "User_id:"&rs("id")&"<br>" response.write "User_name:"&rs("user_name")&"<br><br>" rs.movenext '纪录指针下移 if rs.eof then exit for '如果到达纪录集底部则退出循环 next end if '显示翻页按钮 if page>1 then response.write "<a href="&request.servervariables("document_name")&"?page=1>第一页</a> " response.write "<a href="&request.servervariables("document_name")&"?page="&(page-1)&">上一页</a> " end if if page<>rs.pagecount then response.write "<a href="&request.servervariables("document_name")&"?page="&(page+1)&">下一页</a> " response.write "<a href="&request.servervariables("document_name")&"?page="&rs.pagecount&">最后一页</a> " end if response.write"页码:"&page&"/"&rs.pagecount '关闭对象,释放内存 rs.close set rs=nothing conn.close set conn=nothing %> 思考:分页过程中使用了哪些额外的属性? 做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。
|
| |
|
[]
[返回上一页]
[打 印]
[收 藏] |
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|