·您的位置: 首页 » 资源教程 » 编程开发 » ASP » 如何做一个高效的ASP数据库操作程序

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

类别: ASP教程  评论数:0 总得分:0
<!--
推荐:如何做一个高效的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>
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1