📄 asp深度揭密(上).htm
字号:
user_name=@user_name and password=@password<BR>response.write
"普通的调用方法:<br>"<BR>set
rs=server.createobject("adodb.recordset")<BR>sql="user_info_1
'"&request.querystring("user_name")&"','"&request.querystring("password")&"'"<BR>rs.open
sql,conn,1,1<BR>response.write
rs("id")&"<br>"<BR>rs.close</P>
<P>'使用recordset调用无输入参数,返回纪录集的存储过程,可以使用recordcount等属性<BR>'CREATE
PROCEDURE [user_info_3] AS<BR>'select * from
user_info<BR>response.write
"<br>返回纪录集,可以使用recordcount等属性:"<BR>sql="exec
user_info_3"<BR>rs.open sql,conn,1,1<BR>for i=1 to
rs.recordcount<BR>response.write
"<br>"&rs("user_name")<BR>rs.movenext<BR>next<BR>rs.close<BR>set
rs=nothing</P>
<P>'使用command调用带输出参数的存储过程<BR>'CREATE PROCEDURE [output_1]<BR>'@sid
int output<BR>'AS<BR>'set @sid=2<BR>response.write
"<br><br>调用带输出参数的存储过程:<br>"<BR>set
cmd=server.createobject("adodb.command")<BR>cmd.activeconnection=conn<BR>cmd.commandtext
= "output_1"<BR>cmd.parameters.append
cmd.createparameter("@sid",adinteger,adparamoutput)<BR>cmd("@sid")=10<BR>cmd.execute()<BR>bbb=cmd("@sid")<BR>response.write
bbb&"<br>"<BR>set cmd=nothing</P>
<P>'使用command调用带两个输入参数和返回值的存储过程<BR>'CREATE PROCEDURE
[return_1]<BR>'(@user_name varchar(40))<BR>'AS<BR>'if
exists(select id from user_info where
user_name=@user_name)<BR>'return 1<BR>'else<BR>'return
0<BR>response.write
"<br>调用带两个输入参数和返回值的存储过程:<br>"<BR>set
cmd=server.createobject("adodb.command")<BR>cmd.activeconnection=conn<BR>cmd.commandtype
= adcmdstoredproc<BR>cmd.commandtext =
"return_1"<BR>cmd.parameters.append
cmd.createparameter("@return_value",adinteger,adparamreturnvalue)<BR>cmd.parameters.append
cmd.createparameter("@user_name",advarchar,adparaminput,40)<BR>cmd.parameters.append
cmd.createparameter("@password",advarchar,adparaminput,20)<BR>cmd("@user_name")="tuth"<BR>cmd("@password")="yyuyu"<BR>cmd.execute()<BR>rrr=cmd("@return_value")<BR>response.write
rrr<BR>set cmd=nothing</P>
<P>conn.close<BR>set conn=nothing<BR>%></P>
<P>效果:<BR>访问http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password=ttt时,出现如下</P>
<P>普通的调用方法:<BR>12</P>
<P>返回纪录集,可以使用recordcount等属性:<BR>ahyi<BR>tet<BR>tuth</P>
<P>调用带输出参数的存储过程:<BR>2</P>
<P>调用带两个输入参数和返回值的存储过程:<BR>1</P>
<P>注意:若存储过程无参数,则调用的sql语句直接为存储过程名,一个参数为“存储过程名 参数”,若是多个参数,则“存储过程名
参数1,参数2,……,参数n”;如果在sql语句中加入exec,则在返回的记录集中可以使用recordcount等属性;如果想获得存储过程的返回值或输出参数,可以使用command对象。</P>
<P>⑵.使用事务处理</P>
<P>①.Asp内嵌的事务支持</P>
<P>例子:<BR>use_transaction_1.asp<BR><%<BR>'Asp中使用事务<BR>Set
conn=Server.CreateObject("ADODB.Connection")<BR>conn.Open
"course_dsn","course_user","course_password"<BR>conn.begintrans
'开始事务</P>
<P>sql="delete from user_info"<BR>set
rs=server.createobject("adodb.recordset")<BR>rs.open
sql,conn,3,3<BR>if conn.errors.count>0 then
'有错误发生<BR>conn.rollbacktrans '回滚<BR>set
rs=nothing<BR>conn.close<BR>set conn=nothing<BR>response.write
"交易失败,回滚至修改前的状态!"<BR>response.end<BR>else<BR>conn.committrans
'提交事务<BR>set rs=nothing<BR>conn.close<BR>set
conn=nothing<BR>response.write "交易成功!"<BR>response.end<BR>end
if<BR>%></P>
<P>②.数据库级的事务</P>
<P>i.创建存储过程</P>
<P>CREATE PROCEDURE [user_info_2]<BR>(@user_name
varchar(40),@password varchar(20))<BR>AS<BR>SET XACT_ABORT
ON<BR>BEGIN TRANSACTION<BR>delete from user_info where
user_name=@user_name and password=@password<BR>COMMIT
TRANSACTION<BR>SET XACT_ABORT OFF</P>
<P>ii.在Asp中调用</P>
<P>use_transaction_2.asp<BR><%<BR>Set
conn=Server.CreateObject("ADODB.Connection")<BR>conn.Open
"course_dsn","course_user","course_password"</P>
<P>sql="user_info_2
'"&request.querystring("user_name")&"','"&request.querystring("password")&"'"</P>
<P>set rs=server.createobject("adodb.recordset")<BR>rs.open
sql,conn,1,1<BR>set rs=nothing<BR>conn.close<BR>set
conn=nothing<BR>%><BR><BR>讨论:两种方式的优劣?</P>
<P>⑶.使用视图<BR>在数据库中定义好视图之后,在Asp中如同使用一个表一样来使用视图</P>
<P>4.一个数据库分页的例子</P>
<P>db_page.asp<BR><%<BR>on error resume next<BR>Set
conn=Server.CreateObject("ADODB.Connection")
'创建连接数据库的对象<BR>conn.Open
"course_dsn","course_user","course_password" '使用该对象连接数据库<BR>set
rs=server.createObject("adodb.recordset")<BR>sql="select * from
user_info order by id desc"<BR>rs.open sql,conn,1,1</P>
<P>if rs.recordcount>0 then '如果有记录<BR>rs.pagesize=2
'每页最多显示2条纪录<BR>'从URL获取当前要显示的页<BR>page=cint(request("page"))<BR>'页面参数异常处理<BR>if
page="" then page=1<BR>if page<1 then page=1<BR>if page>=
rs.pagecount then page=rs.pagecount<BR>rs.absolutepage=page
'当前页为page参数指定的页<BR>for i=1 to rs.pagesize
'根据pagesize参数的大小循环显示当前页中的纪录<BR>response.write
"User_id:"&rs("id")&"<br>"<BR>response.write
"User_name:"&rs("user_name")&"<br><br>"<BR>rs.movenext
'纪录指针下移<BR>if rs.eof then exit for '如果到达纪录集底部则退出循环<BR>next<BR>end
if</P>
<P>'显示翻页按钮<BR>if page>1 then<BR>response.write "<a
href="&request.servervariables("document_name")&"?page=1>第一页</a> "<BR>response.write
"<a
href="&request.servervariables("document_name")&"?page="&(page-1)&">上一页</a> "
<BR>end if<BR>if page<>rs.pagecount then<BR>response.write
"<a
href="&request.servervariables("document_name")&"?page="&(page+1)&">下一页</a> "
<BR>response.write "<a
href="&request.servervariables("document_name")&"?page="&rs.pagecount&">最后一页</a> "
<BR>end
if<BR>response.write"页码:"&page&"/"&rs.pagecount</P>
<P>'关闭对象,释放内存<BR>rs.close<BR>set rs=nothing<BR>conn.close<BR>set
conn=nothing<BR>%></P>
<P>思考:分页过程中使用了哪些额外的属性? <BR><BR></P></BLOCKQUOTE></TD></TR>
<TR>
<TD class=p4 vAlign=top width="50%">
<BLOCKQUOTE>原作者:ahyi(转)<BR>来 源:开发者俱乐部<BR>共有7892位读者阅读过此文<BR>【<A
href="http://bbs.aspsky.net/list.asp?boardid=1">发表评论</A>】
</BLOCKQUOTE></TD>
<TD class=p4 vAlign=top width="50%">
<P>
<LI><FONT color=#0772b1>上篇文章</FONT>:<A
href="http://www.aspsky.net/article/list.asp?id=2778">简体中文编码对应器</A>
<BR>
<LI><FONT color=#0772b1>下篇文章</FONT>:<A
href="http://www.aspsky.net/article/list.asp?id=2780">Asp深度揭密(下)</A>
</LI></TD></TR>
<TR>
<TD bgColor=#297dff class=p4 height=20 width="50%"><FONT
color=#ceffff> → 本周热门</FONT></TD>
<TD bgColor=#297dff class=p4 width="50%"><FONT color=#ceffff> →
相关文章</FONT></TD></TR>
<TR>
<TD bgColor=#586011 colSpan=2 height=1><SPACER type="block"
width="1"></TD></TR>
<TR>
<TD colSpan=2 height=7></TD></TR>
<TR>
<TD class=p4 vAlign=top width="50%">
<LI><A href="http://www.aspsky.net/article/list.asp?id=1510"
target=_top title="SQL Server 7.0 入门(一)">SQL Server 7.0
入门(...</A>[<FONT color=red>7238</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1540"
target=_top title=PHP4实际应用经验篇(1)>PHP4实际应用经验篇(1)</A>[<FONT
color=red>7135</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1536"
target=_top
title=无组件文件上传代码实例(支持多文件上传及文件和input域混合上传)>无组件文件上传代码实例(支持多文件上...</A>[<FONT
color=red>6029</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=2557"
target=_top title=树型结构在ASP中的简单解决>树型结构在ASP中的简单解决</A>[<FONT
color=red>5757</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1545"
target=_top title=PHP4实际应用经验篇(6)>PHP4实际应用经验篇(6)</A>[<FONT
color=red>5599</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=2563"
target=_top title=一个老个写的无组件上传>一个老个写的无组件上传</A>[<FONT
color=red>5013</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1542"
target=_top title=PHP4实际应用经验篇(3)>PHP4实际应用经验篇(3)</A>[<FONT
color=red>4731</FONT>]<BR></LI></TD>
<TD class=p4 vAlign=top width="50%">
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2780">Asp深度揭密(下)</A><BR>
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2779">Asp深度揭密(上)</A><BR></LI></TD></TR>
<TR>
<TD colSpan=2 height=7></TD></TR></TBODY></TABLE>
<TD bgColor=#297dff width=1> </TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD bgColor=#297dff height=1><SPACER type="block"
width="1"></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle height=30></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle class=p2 width="100%">
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle class=p2 width="100%">
<P align=center><A
href="http://www.aspsky.net/produce/index.asp">客户服务</A> -- <A
href="http://www.aspsky.net/aspads.asp">广告合作</A> -- <A
href="http://www.aspsky.net/about.asp">关于本站</A> -- <A
href="http://www.aspsky.net/tell.asp">联系方法</A><BR><BR>动网先锋版权所有 <FONT
face=Verdana, size=1 Arial, Helvetica, sans-serif>Copyright ©
2000-2001 <B>AspSky<FONT color=#cc0000>.Net</FONT></B>, All Rights
Reserved .</FONT>
</P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -