蛙蛙推薦:如何做一個高效的ASP資料庫操作程式

來源:互聯網
上載者:User

<!--
蛙蛙推薦:如何做一個高效的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>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.