|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。 |
|