柔情似水 发表于 2015-1-16 22:53:54

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的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。

海妖 发表于 2015-1-20 05:58:22

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

仓酷云 发表于 2015-1-20 05:58:22

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

灵魂腐蚀 发表于 2015-1-28 19:40:29

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

若天明 发表于 2015-2-5 22:40:53

那么,ASP.Net有哪些改进呢?

小妖女 发表于 2015-2-14 00:20:07

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

精灵巫婆 发表于 2015-3-4 03:27:19

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

蒙在股里 发表于 2015-3-11 15:50:42

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

若相依 发表于 2015-3-19 01:37:42

那么,ASP.Net有哪些改进呢?

爱飞 发表于 2015-3-27 02:13:09

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
页: [1]
查看完整版本: ASP网页设计关于数据库毗连的一点定见