分享
 
 
 

蛙蛙推荐:如何做一个高效的ASP数据库操作程序

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

<!--

蛙蛙推荐:如何做一个高效的ASP数据库操作程序

一般情况下我们做的ASP数据库程序都是ADO+ACCESS,并且都是使用一些查询字符串加记录集来操作数据库,最多也只使用了connection和recordset两个对象以及它们的几个常用的属性和方法,其实ADO的使用远不仅这些,我们还有command对象和Parameters对象没有用呢,而这两个对象用好了会提高你整个ASP程序的性能.

我这里写了一个歌词管理程序,用的是sqlserver数据库和存储过程实现的,(这里没有用参数化查询,也正是为了演示ado对sqlserver和存储过程的用法).

希望大家能从我的示例代码中学到新的东西,嘿嘿.

注意:我把示例代码里面的asp边界符(就是尖括号加上一个百分号的那个标识)替换成了全角中文的尖括号,因为很多论坛会过滤这个符号,再你复制后记着把它替换成英文半角的.

-->

<!-- 数据库脚本 -->

<!-- 先在sqlserver里新建个数据库song然后在查询分析器里选择这个数据库,赋值下面的t-sql代码执行批查询,最后把这个页放在虚拟目录下,并把其中的数据库连接字符串修改成适合你的数据库配置的字符串,运行本页就可以了 -->

<!--

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[check_song]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[check_song]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[insert_song]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[insert_song]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_song_list]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_song_list]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_wawa_song]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_wawa_song]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[wawa_song]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[wawa_song]

GO

CREATE TABLE [dbo].[wawa_song] (

[song_id] [int] IDENTITY (1, 1) NOT NULL ,

[song_name] [char] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[song_content] [varchar] (4000) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[song_author] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,

[author_id] [int] NULL

) ON [PRIMARY]

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

/*

过程check_song,通过@song_name变量来查询数据表中是否有重复的记录,如果有则设定@state这个输入参数的值为1,该值直接影响到addnew过程的运行

*/

create proc check_song

@song_name char(40),

@state int output

as

begin

if exists(select song_name from wawa_song

where song_name=@song_name)

set @state = 1

else

set @state = 0

end

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

/*

过程insert_song

*/

CREATE proc insert_song

@song_name char(40),

@song_content varchar(4000),

@song_author char(20)

as

begin

declare @state int

exec check_song @song_name,@state output

if @state = 0

begin

begin tran

insert into wawa_song(song_name,song_content,song_author) values (@song_name,@song_content,@song_author)

commit tran

raiserror('%s添加成功!',16,1,@song_name)

end

else

begin

raiserror ('用户名%s已存在!',16,1,@song_name)

return

end

end

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS OFF

GO

CREATE PROCEDURE [p_song] AS

select * from wawa_song order by song_id desc

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS OFF

GO

create proc p_wawa_song

@id int

as

select song_id,song_name,song_author,song_content from wawa_song where song_id=@id

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

-->

<!-- /数据库脚本 -->

<!-- 数据库连接 -->

《%

Dim conn,strconn

Set conn = Server.CreateObject("ADODB.Connection")

'如果你的数据库的连接字符串和下面一句不符合,可以修改下句代码来适合你的数据库配置

strconn="Driver={sql server};server=192.168.0.110;database=song1;uid=sa;pwd=sa;"

conn.Open strconn

%》

<!-- /数据库连接 -->

<!-- 获取本页地址 -->

《%

Dim fileName,postion

fileName = Request.ServerVariables("script_name")

postion = InstrRev(fileName,"/")+1

fileName = Mid(fileName,postion)

%》

<!-- /获取本页地址 -->

<!-- 让数据库的数据按原格式输出的函数 -->

《%

Function wawaHTML(result)

if not isNull(result) then

result = Server.HtmlEncode(result)

result = replace(result,vbcrlf,"<br>")

result = replace(result," ","&nbsp;")

result = replace(result,chr(9),"&nbsp;&nbsp;&nbsp;&nbsp;") 'Tab键

wawaHTML=result

else

wawaNHTML= "没有内容"

end if

end Function

%》

<!-- /让数据库的数据按原格式输出的函数 -->

<!-- 读取数据库所有歌曲并显示出来 -->

《%

Dim rs_wawa

set rs_wawa=server.createobject("adodb.recordset")

rs_wawa.open "p_song",conn,1,1,4

dim pages,allpages,page

pages=10

rs_wawa.pageSize=pages

allPages = rs_wawa.pageCount

page = clng(Request("page"))

if isempty(page) or page<0 or page=0 then page=1

if page >rs_wawa.pagecount then page=rs_wawa.pagecount

if not(rs_wawa.bof and rs_wawa.eof) then

rs_wawa.AbsolutePage = page

end if

%》

<!--/ 读取数据库所有歌曲并显示出来 -->

<!-- 根据参数从数据库里读取一个歌曲的记录 -->

《%

if request("action")="view" then

if request("id")<>"" then

dim id

id=clng(Trim(Request.QueryString("id")))

set cm = Server.CreateObject("ADODB.Command")

Set cm.ActiveConnection = conn

cm.CommandText = "p_wawa_song"

cm.CommandType = 4

set p = cm.Parameters

p.Append cm.CreateParameter("@id",3,1,,id)

dim rs_song

set rs_song=server.createobject("adodb.recordset")

rs_song.open cm,,1,1

else

response.Write("没有传递参数")

response.End()

end if

end if

%》

<!-- /根据参数从数据库里读取一个歌曲的记录 -->

<!-- 把表单数据添加到数据库 -->

《%

if not isempty(request.Form("submit")) then

call addnew

end if

sub addnew

on error resume next

song_author=request("song_author")

song_content=request("song_content")

song_name=request("song_name")

set cm = Server.CreateObject("ADODB.Command")

Set cm.ActiveConnection = conn

cm.CommandText = "insert_song"

cm.CommandType = 4

set p = cm.Parameters

p.Append cm.CreateParameter("@song_name",130,1,60,song_name)

p.append cm.CreateParameter("@song_content",202,1,4000,song_content)

p.append cm.CreateParameter("@song_author",130,1,20,song_author)

cm.Execute

if err.number<>0 then

response.write err.description

else

response.write "ddd"

response.end

end if

set cm = nothing

response.Redirect fileName

end sub

%》

<!-- /把表单数据添加到数据库 -->

<table width="90%" border="0" align="center">

<tr>

<td valign="top">

<!-- 添加歌曲用户接口 -->

《%if request("action")="add" then%》

<table width="500" border="0" align="center" cellspacing="1" bgcolor="#0000FF">

<form action="" method="post">

<tr bgcolor="#FFFFFF">

<td colspan="2"><div align="center">添加歌词</div></td>

</tr>

<tr bgcolor="#FFFFFF">

<td width="50%" align="right">歌曲作者:</td>

<td width="50%"> <input name="song_author" type="text" id="song_author"></td>

</tr>

<tr bgcolor="#FFFFFF">

<td width="50%" align="right">歌曲名称:</td>

<td width="50%"><input name="song_name" type="text" id="song_name"></td>

</tr>

<tr bgcolor="#FFFFFF">

<td align="right">歌曲内容:</td>

<td><textarea name="song_content" cols="50" rows="5" id="song_content"></textarea></td>

</tr>

<tr bgcolor="#FFFFFF">

<td align="right"><input type="submit" name="Submit" value="提交"></td>

<td><input type="reset" name="Submit2" value="重置"></td>

</tr>

</form>

</table>

《%end if%》

<!-- /添加歌曲用户接口 -->

<!-- 显示歌曲用户接口 -->

《%if request("action")="view" then%》

<table width="500" border="0" align="center" cellspacing="1" bgcolor="#0000FF">

<tr bgcolor="#FFFFFF">

<td colspan="2"><div align="center">查看歌词</div></td>

</tr>

<tr bgcolor="#FFFFFF">

<td width="50%" align="right">歌曲作者:</td>

<td width="50%">《%=rs_song("song_author")%》</td>

</tr>

<tr bgcolor="#FFFFFF">

<td width="50%" align="right">歌曲名称:</td>

<td width="50%">《%=rs_song("song_name")%》</td>

</tr>

<tr align="left" bgcolor="#FFFFFF">

<td colspan="2">《%=wawaHTML(cstr(rs_song("song_content")))%》</td>

</tr>

</table>

《%end if%》

<!-- /显示歌曲用户接口 -->

<!-- /欢迎界面用户接口 -->

《%if request("action")="hello" or request("action")="" then%》

<table width="500" border="0" align="center" cellspacing="1" bgcolor="#0000FF">

<tr bgcolor="#FFFFFF">

<td colspan="2"><div align="center">欢迎使用蛙蛙歌词管理系统</div></td>

</tr>

<tr bgcolor="#FFFFFF">

<td colspan="2" align="left"><p>残荷听雨,梨花飞雪,<br>

落英缤纷时节。<br>

晓来谁染枫林醉?点点都是离人泪.<br>

活着,就是快乐!<br>

自信,就是美丽!<br>

有人爱,就是幸福。 <br>

<br>

<a href="http://blog.csdn.net/onlytiancai/" target="_blank" ><img src="http://bbs.inhe.net/UploadFile/2004-2/2004212153455526.gif" border="0" title="欢迎访问我的蛙蛙池塘哦,呱呱"></a></p>

</td>

</tr>

</table>

《%end if%》

<!-- /欢迎界面用户接口 -->

</td>

<td valign="top">

<center>

<A HREF="《%=fileName%》">首页</A>&nbsp;&nbsp;<A HREF="《%=fileName%》?action=add">添加歌曲</A>

<table width="300" border="0" align="center" cellspacing="1" bgcolor="#0000FF">

《%

if not(rs_wawa.bof and rs_wawa.eof) then

While Not rs_wawa.EOF and pages>0

%》

<tr bgcolor="#FFFFFF">

<td><A HREF="《%=fileName%》?action=view&id=《%=rs_wawa(0)%》">《%=rs_wawa(1)%》</A></td>

</tr>

《%

rs_wawa.MoveNext

pages=pages-1

Wend

rs_wawa.close:set rs_wawa=nothing

else

%》

<tr bgcolor="#FFFFFF">

<td>还没有添加歌曲呢</td>

</tr>

</table>

《%

end if

conn.close:Set conn = Nothing

%》

《%if page<>1 then%》

<a href="《%=filename%》?page=1">首页<a/> &nbsp;&nbsp; <a href="《%=filename%》?action=hello&?page=《%=(page-1)%》">上一页</a>&nbsp;&nbsp;

《%end if%》

《%if page<>allpages then %》

<a href="《%=filename%》?page=《%=(page+1)%》">下一页</a>&nbsp;&nbsp; <a href="《%=filename%》?page=《%=(allpages)%》">末页</a>&nbsp;&nbsp;

《% End If %》

当前第《%=page%》几页&nbsp;&nbsp; 共《%=allpages%》页

</center>

</td>

</tr>

</table>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有