ASP网页设计关于数据库毗连的一点定见
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。数据|数据库|数据库毗连比来常常见到有人问怎样毗连数据库效力最高,泯灭资本最低,在这里我谈一下我的意见。毗连数据库不过乎三种方法,一种是将数据库毗连放到session变量中,一种是放到application变量中,再一种就是在页面中利用时翻开,用完立
刻封闭。只管前两种办法用起来对照便利,但应当说第三种办法是最好的,上面我分离讲一下,因为程度所限,毛病难
免,请人人斧正。
session:用session的弱点不言而喻,服务器会为每个用户创立一个数据毗连,直到这个用户分开或session超时,
如许就会年夜年夜华侈服务器资本,假如会见量年夜的话,体系资本就会被耗尽,大概数据库保持数抵达上界,就会形成程序出
错。
application:既然用session会呈现这么多成绩,那是否是用application最节俭资本呢?只创建一条毗连就够了,年夜
家共用。不是如许的,假如不管几用户只创建一条毗连,一样会带来良多成绩,起首是假如会见量年夜,一条毗连一定无
法满意必要,一样会形成程序堕落;其次,假如你用了公家一时表或光标,那贫苦就来了。公家一时表和光标只对以后连
接可见,但是假如人人都用一条毗连,那末就会发生抵触,形成程序毛病。
最初一种办法(即开即用即关):这是最好的一种办法,缘故原由以下:翻开数据库毗连,利用完当即封闭,是一种优秀的
编程习气,实在不但是数据库毗连工具云云,一切工具也就是说server.creatobject出来的工具实际上保存期都不克不及凌驾
0.01秒(外洋有人做过测试的,不是我信口开合),假如凌驾就会对效力发生影响。那末大概你会说每一个页面城市翻开一个
毗连,那翻开的毗连数不是更多,效力不是更低吗?错了,讲到这里就不克不及不提一下毗连池(也叫共享池的观点),如今
的年夜型数据库包含odbc自己都供应毗连池的功效,他的基础道理是如许的,一个毗连请求封闭时体系并非真的封闭它,
而是将它放到共享池中,假如这时候有不异的毗连哀求,体系就会把这个毗连从共享池中掏出来给用户,如许就省往了封闭
和翻开毗连的体系开支,只要当这个毗连长工夫不被哀求时而且个性池中的毗连饱和,体系才会真的干失落它。分明这个道
理,你就分明只管你在程序中哀求翻开和封闭毗连,但体系其实不必定要增添这些开支的。
事理讲完了,如今给例子。上面是翻开和封闭数据库毗连的两个函数,你能够把它存为一个include文件,利用时包括
出去就好了。例子毗连的数据库是sqlserver7.0,我没用odbc,由于用oledb效力高的多。
<scriptlanguage=VBScriptrunat=server>
---------------------------------------------------------------------------------
filename:connectdb.inc
Description:数据库毗连
functionlist:OpenDbConnection(a_strDataName,a_strServerName):翻开数据库毗连
parameter:a_strDateName,数据库服务器名
a_strServerName:数据库server名
CloseDbConnection(a_objDbConn):封闭数据库毗连
parameter:a_ObjDbConn,毗连工具
date:2000/05/03
Author:LiuYunpeng
History:2000/05/03version1.0
2000/06/03modifiedfunctionopendbconnectionsparameters
byLiuYunpeng
--------------------------------------------------------------------------------
FunctionOpenDbConnection(a_strDataName,a_strServerName)
dimm_DbConn,m_strConn
Setm_dbConn=Server.CreateObject("ADODB.Connection")
m_strConn="Provider=Sqloledb;UserID=sa;Password=;InitialCatalog="&a_strDataName&";
DataSource="&a_strServerName
m_dbConn.openm_strConn
CallCheckError()
returnthisdatabaseconnection
SetOpenDbConnection=m_dbConn
endfunction
subCloseDbConnection(a_objDbconn)
a_objDbconn.close
seta_objDbConn=nothing
endsub
</script>
复杂说一下利用办法,假定你的数据库server是"server1",数据库是"mydatabase",则利用以下
<%
dimm_objConn
翻开数据库毗连
setm_objConn=OpenDbConnection("mydatabase","server1")
....
封闭数据库毗连
CloseDbConnectionm_objConn
%>
</p>对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 那么,ASP.Net有哪些改进呢? 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 那么,ASP.Net有哪些改进呢? 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
页:
[1]