欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

asp快速開發(fā)方法之?dāng)?shù)據(jù)操作

admin
2010年7月3日 13:37 本文熱度 7063
[p]我的目的是讓開發(fā)變得簡(jiǎn)單,盡可能少地考慮實(shí)現(xiàn)語(yǔ)句,更多地把精力用于思考業(yè)務(wù)邏輯。希望我的文章對(duì)大家有所啟發(fā)和幫助。[/p]
[p]先看以下例子:[/p]
<%[br]db_path = "database/cnbruce.mdb"[br]set conn= server.createobject("adodb.connection")[br]connstr = "provider=microsoft.jet.oledb.4.0;data source="&server.mappath(db_path)[br]conn.open connstr[br]set rs = server.createobject ("adodb.recordset")[br]sql = "select * from cnarticle"[br]rs.open sql,conn,1,1[br]if rs.eof and rs.bof then[br]response.write ("暫時(shí)還沒(méi)有文章")[br]else[br]do until rs.eof[br]response.write("文章標(biāo)題是:"& rs("cn_title"))[br]response.write("
文章作者是:"& rs("cn_author"))[br]response.write("
文章加入時(shí)間是:"& rs("cn_time"))[br]response.write("
文章內(nèi)容是:"& rs("cn_content"))[br]response.write("
")[br]rs.movenext[br]loop[br]end if[br]rs.close [br]set rs = nothing[br]conn.close [br]set conn=nothing[br]%>
[p][br]嗯,這是一個(gè)典型的讀取數(shù)據(jù)并顯示的例子,參見(jiàn):[url=http://cnbruce.com/blog/showlog.asp?cat_id=26&log_id=448]http://cnbruce.com/blog/showlog.asp?cat_id=26&log_id=448[/url][br]嗯,確實(shí)簡(jiǎn)單。從上至下,很容易明白。但是當(dāng)你對(duì)多個(gè)表進(jìn)行讀插刪改的時(shí)候,當(dāng)你的代碼里有很多html\js混雜的時(shí)候,你會(huì)有疑問(wèn):為什么有這么多東西要重復(fù)呢?[br]所以一般我們把一些簡(jiǎn)單的操作獨(dú)立出來(lái),寫成類或者函數(shù)放進(jìn)包含文件(include)。[br][br]那么以上的操作我們可以使用兩個(gè)文件來(lái)實(shí)現(xiàn):[br]conn.asp[/p]
<%[br]db_path = "database/cnbruce.mdb"[br]set conn= server.createobject("adodb.connection")[br]connstr = "provider=microsoft.jet.oledb.4.0;data source="&server.mappath(db_path)[br]conn.open connstr[br]%>
[p][br]showit.asp[/p]
[br]<%[br]set rs = server.createobject ("adodb.recordset")[br]sql = "select * from cnarticle"[br]rs.open sql,conn,1,1[br]if rs.eof and rs.bof then[br]response.write ("暫時(shí)還沒(méi)有文章")[br]else[br]do until rs.eof[br]response.write("文章標(biāo)題是:"& rs("cn_title"))[br]response.write("
文章作者是:"& rs("cn_author"))[br]response.write("
文章加入時(shí)間是:"& rs("cn_time"))[br]response.write("
文章內(nèi)容是:"& rs("cn_content"))[br]response.write("
")[br]rs.movenext[br]loop[br]end if[br]rs.close [br]set rs = nothing[br]conn.close [br]set conn=nothing[br]%>
[p][br]現(xiàn)在相對(duì)簡(jiǎn)單多了,如果有多個(gè)操作頁(yè)面我們只要導(dǎo)入連接文件就可以了,不過(guò)還是不夠簡(jiǎn)潔,哪里不簡(jiǎn)潔?[br]一直在創(chuàng)建server,一直在寫close,這樣很容易出錯(cuò),并且看起來(lái)與內(nèi)容無(wú)關(guān)的太多。[br][br]那我再改進(jìn)下:[br]把conn.asp文件改成:[/p]
[p][/p]
<%[br]dim conn[br]dim rs[br]sub closedatabase[br] conn.close[br] set conn = nothing[br]end sub[br]sub opendatabase[br] dim strserver,struid,strsapwd,strdbname[br] strserver="192.168.1.1" '數(shù)據(jù)庫(kù)服務(wù)器名[br] struid="sa" '您的登錄帳號(hào)[br] strsapwd="" '您的登錄密碼[br] strdbname="cnbruce.mdb" '您的數(shù)據(jù)庫(kù)名稱[br] set conn = server.createobject("adodb.connection")[br] '用于連接access[br] conn.connectionstring = "provider=microsoft.jet.oledb.4.0; data source=" & server.mappath(strdbname)[br] '用于連接mssql[br] 'conn.connectionstring = "driver={sql server};driver={sql server};server="&strserver&";uid="&struid&";pwd="&strsapwd&";database="&strdbname[br] set rs=server.createobject("adodb.recordset")[br] conn.open[br] if err then[br] err.clear[br] set conn = nothing[br] gbl_chk_tempstr = gbl_chk_tempstr & "數(shù)據(jù)庫(kù)連接錯(cuò)誤!"[br] response.write gbl_chk_tempstr[br] response.end[br] end if [br]end sub[br]%>
現(xiàn)在我們的showit.asp可以這樣寫:[br]showit.asp[br]
[br]<%[br]sql = "select * from cnarticle"[br]opendatabase[br]rs.open sql,conn,1,1[br]if not rs.eof then[br] do until rs.eof[br] response.write("文章標(biāo)題是:"& rs("cn_title"))[br] response.write("
文章作者是:"& rs("cn_author"))[br] response.write("
文章加入時(shí)間是:"& rs("cn_time"))[br] response.write("
文章內(nèi)容是:"& rs("cn_content"))[br] response.write("
")[br] rs.movenext[br] loop[br]else[br] response.write ("暫時(shí)還沒(méi)有文章")[br]end if[br]closedatabase[br]%>[br]嗯,我們又少寫了一些東西,這樣是最簡(jiǎn)單的嗎?當(dāng)然不是!還可以更簡(jiǎn)單。[br]使用getrows把查詢出來(lái)的數(shù)據(jù)傳給一個(gè)變量,使用ubound方法取得數(shù)據(jù)記錄條數(shù)。[br]不明白?沒(méi)關(guān)系,讓我們繼續(xù)往下看:[br][br]再建個(gè)文件:sql.asp[br]sql.asp[br]
<%[br]class selectdatatable[br] public function selectdata(sql)[br] if sql<>"" then[br] opendatabase[br] rs.open sql,conn,1,1[br] if not rs.eof then[br] thedata=rs.getrows(-1)[br] closedatabase[br] else[br] closedatabase[br] end if[br] end if[br] selectdata=thedata[br] end function[br]end class[br]%>[br]嗯,復(fù)制它就可以了,現(xiàn)在我們的showit.asp可以簡(jiǎn)單地這樣寫:[br][br]showit.asp[br]
[br][br]<%[br]sql = "select * from cnarticle"[br]set loaddata=new selectdatatable[br]thedata=loaddata.selectdata(sql)[br]if isarray(thedata) then[br] num=ubound(thedata,2)[br] for i=0 to num[br] response.write("文章標(biāo)題是:"& thedata(1,i))[br] response.write("
文章作者是:"& thedata(2,i))[br] response.write("
文章加入時(shí)間是:"& thedata(3,i))[br] response.write("
文章內(nèi)容是:"& thedata(4,i))[br] response.write("
")[br] next[br]else[br] response.write("暫時(shí)還沒(méi)有文章")[br]end if[br]%>[br]呵呵,這樣,我們只要用兩句語(yǔ)句就完成了數(shù)據(jù)的讀取。同樣的,通過(guò)在sql.asp中加入[br]
<%[br] public function selectdatanum(sql)[br] if sql<>"" then[br] opendatabase[br] rs.open sql,conn,1,1[br] if not rs.eof then[br] thedata=rs.getrows(-1)[br] closedatabase[br] num=ubound(thedata,2)[br] else[br] closedatabase[br] end if[br] end if[br] selectdatanum=num[br] end function[br]%>[br]我們就可以使用[br]
<%[br]sql = "select * from cnarticle"[br]set loaddata=new selectdatatable[br]num=loaddata.selectdatanum(sql)[br]%>[br]來(lái)取得記錄條數(shù),可以用于分頁(yè)或者用戶名是否重復(fù)的判斷。[br][br]其它的對(duì)數(shù)據(jù)記錄的操作我們新建一個(gè)類,使用updatetable來(lái)完成操作:[br]
<%[br]class updatatable[br] public function updatasql(sql)[br] if sql<>"" then[br] opendatabase[br] conn.execute(sql)[br] closedatabase[br] end if[br] end function[br]end class[br]%>[br]
<%[br]sql = "delete from cnarticle"[br]set updatedate=new updatatable[br]updatedate.updatasql(sql)[br]%>
當(dāng)然你也這以這樣寫:[br]
<%[br]sql="insert into cnarticle(cn_title,cn_author,cn_content) values(' "&whattitle&" ',' "&whoauthor&" ',' "&whatcontent&" ')"[br]opendatabase[br]conn.execute(sql)[br]closedatabase[br]%>[br]考慮到可能刪除語(yǔ)句我們會(huì)這么寫:[br]sql="delect from cnarticle where id in(1,3,5,6,7,8)"[br][br]我新建一個(gè)類deldatatable,直接使用deldatatable.deldatasql(tablename,delfield,id)完成記錄的刪除操作。[br]
<%[br]class deldatatable[br] dim tempvalue[br] public function deldatasql(tablename,delfield,id)[br] if tablename<>"" and id<>"" then[br] sql="delete from "&tablename[br] if isnumeric(id) and instr(id,",")=0 then[br] sql = sql & " where "&delfield&" = "&id[br] else[br] sql = sql & " where "&delfield&" in ("& id &")"[br] end if[br] opendatabase[br] conn.execute(sql)[br] closedatabase[br] tempvalue=true[br] else[br] tempvalue=false[br] end if[br] deldatasql=tempvalue[br] end function[br]end class[br]%>[br]以下是我的sql.asp文件,請(qǐng)自己進(jìn)行增刪[br]復(fù)制代碼
<%[br]'用于查詢數(shù)據(jù)[br]class selectdatatable[br] '查出記錄[br] public function selectdata(sql)[br] if sql<>"" then[br] opendatabase[br] rs.open sql,conn,1,1[br] if not rs.eof then[br] thedata=rs.getrows(-1)[br] closedatabase[br] else[br] closedatabase[br] end if[br] end if[br] selectdata=thedata[br] end function[br] '查出記錄條數(shù)[br] public function selectdatanum(sql)[br] if sql<>"" then[br] opendatabase[br] rs.open sql,conn,1,1[br] if not rs.eof then[br] thedata=rs.getrows(-1)[br] closedatabase[br] num=ubound(thedata,2)[br] else[br] closedatabase[br] end if[br] end if[br] selectdatanum=num[br] end function[br] '使用select count(*) from tablename 查出記錄有數(shù)[br] public function selectcountnum(sql)[br] if sql<>"" then[br] opendatabase[br] rs.open sql,conn,1,1[br] if not rs.eof then[br] thedata=rs.getrows(-1)[br] closedatabase[br] num=thedata(0,0)[br] else[br] closedatabase[br] end if[br] end if[br] selectcountnum=num[br] end function[br] '將查詢的數(shù)據(jù)全部生成隱藏值[br] public function gethiddendata(sql)[br] dim tempvalue[br] if sql<>"" then[br] opendatabase[br] rs.open sql,conn,1,1[br] if not rs.eof then[br] thedata=rs.getrows(-1)[br] thefieldcount=rs.fields.count[br] for i=0 to thefieldcount-1[br] thefieldlist = thefieldlist & rs.fields(i).name & ","[br] next[br] closedatabase[br] thefield = split(thefieldlist,",")[br] for i=0 to thefieldcount-1[br] tempvalue = tempvalue & ""[br] next[br] else[br] closedatabase[br] end if[br] end if[br] gethiddendata=tempvalue[br] end function[br] [br]end class[br]class updatatable[br] public function updatasql(sql)[br] if sql<>"" then[br] opendatabase[br] conn.execute(sql)[br] closedatabase[br] end if[br] end function[br] [br]end class[br]class deldatatable[br] dim tempvalue[br] public function deldatasql(tablename,delfield,id)[br] if tablename<>"" and id<>"" then[br] sql="delete from "&tablename[br] if isnumeric(id) and instr(id,",")=0 then[br] sql = sql & " where "&delfield&" = "&id[br] else[br] sql = sql & " where "&delfield&" in ("& id &")"[br] end if[br] opendatabase[br] conn.execute(sql)[br] closedatabase[br] tempvalue=true[br] else[br] tempvalue=false[br] end if[br] deldatasql=tempvalue[br] end function[br]end class[br]%>

該文章在 2010/7/3 13:37:46 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved