|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。技能1、制止利用DSN毗连数据库
1054
是不是仍然在利用ODBC体系或文件DSN毗连数据库?请用OLEDB供应者取代它,这是一种速率更快并且不必要利用DSN的数据库毗连手艺。利用OLEDB供应者,你不用再为了创立体系DSN乞求ISP(或数据库办理员/网站办理员),也不用为了网站文件地位的变更而修正设置。
问:
我看到过大批经由过程数据资本名字(DSN)毗连数据库的例子,不外我如今想欠亨过DSN毗连数据库。在ASP中能够完成这一点吗?可否举几个详细的例子申明?我但愿新的毗连办法不依附于体系DSN,但又能够在数据库毗连串中指定驱动程序、服务器名字、数据库、数据库账号和暗码。
答:
假如你利用的是SQLServer7,请利用上面的数据库毗连串:
strConnString="DSN=;DRIVER={SQLSERVER};"&_
"UID=myuid;PWD=mypwd;"&_
"DATABASE=MyDb;SERVER=MyServer;"
个中最主要的参数在于“DRIVER=”部分。假如你但愿绕过ODBC,间接经由过程OLEDB会见SQLServer(一样平常来说这类办法速率更快),请利用上面这类毗连串:
strConnString="Provider=SQLOLEDB.1;Password=mypassword;"&_
"PersistSecurityInfo=True;UserID=myuid;"&_
"InitialCatalog=mydbname;"&_
"DataSource=myserver;ConnectTimeout=15"
假如你要利用数据库毗连串,但又不熟习OLEDB供应者的毗连串语法,请利用VisualBasic的数据情况计划器或ADO数据控件创立一个,然后把它拷贝出来用于ADO毗连工具就能够了。在当即窗口中,输出命令?dataenvironment1.connection1.ConnectionString能够失掉毗连串的代码。请注重MicrosoftAccess毗连串的语法有所分歧,拜见《SyntaxforDSN-LessConnectionforMSAccess》
拜见:《ASP功能优化指南》中的数据库毗连部分。
2、纪录会合纪录总数的盘算
1062
刚入手下手在ASP页面中利用纪录集的时分大概常常会碰到这个成绩。假如你想会见纪录会合的数据,起首必需包管纪录会合的确包括数据。请记着,假如纪录会合没无数据,体系将显现十分不友爱的运转时毛病信息。你可使用上面的代码往办理这类成绩。
问:
我已无数年的VB履历,但方才入手下手进修ASP和VBScript。如今我要翻开一个Access数据库,盘算个中的纪录总数并在Web页面中显现这些信息。数据库的名字叫sean.mdb,个中包括一个people表,表中有三个纪录。但是,当我运转剧本时它老是说有-1个纪录。
是不是能够告知我上面的代码甚么中央堕落了?
<%
SetobjConn=Server.CreateObject("ADODB.Connection")
SetobjRst=Server.CreateObject("ADODB.Recordset")
objConn.Open("DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ=
"&Server.Mappath("seannewelldbsean.mdb"))
strSQL="SELECT*FROMpeople"
objRst.OpenstrSQL,objConn
Response.write("<P>"&strSQL&"</P>")
Response.write("<H2>Thereare"&objRst.RecordCount&
"Peopleinthedatabase</H2>")
IfobjRst.RecordCount>0Then
objRst.MoveFirst
DoWhileNotobjRst.EOF
Response.write("Name="&objRst.fields(0))
objRst.MoveNext
Loop
else
Response.write("ItsEMPTY!")
EndIf
objRst.Close
SetobjRst=Nothing
objConn.Close
SetobjConn=Nothing
%>
答:
在低版本的MDAC中RecordCount属性前往-1。请在你的服务器上把MDAC文件更新到最新的版本,最新的MDAC文件能够在www.microsoft.com/data找到。
假如Web服务器由ISP办理而你又无权设置它,没法晋级MDAC文件,那末必需修正代码。
本来利用上面的代码反省纪录会合是不是有纪录:
IfobjRst.RecordCount>0Then...
请改用上面的代码:
IfobjRst.BOFandobjRst.EOFThen
纪录集为空
Else
DoWhilenotobjRst.EOF
处置纪录集
objRst.MoveNext
Loop
EndIf
2000年06月30日更新,新西兰的DarylEgarr说:
能够看出,读者发问中的代码并没有毛病。成绩在于“在低版本的MDAC中RecordCount属性前往-1”,这一判别自己并没有毛病,但是从发问内容来看做者不该该作出这类假定,由于原成绩中没有任何一行代码意味着利用了低版本的MDAC。
作者思索成绩的偏向不合错误,成绩的要点在于并不是一切的游标范例都撑持一切的属性和办法(不论接纳哪一种数据库体系)。成绩中代码呈现毛病的真正缘故原由在于利用默许的CursorLocation时:
Recordset.CursorLocation=adUseServer
RecordCount属性只要在纪录集的CursorType为1大概3(即adOpenKeyset,adOpenStatic)时才是可用的。呈现毛病的代码没有指定CursorType,也就是利用了0范例的游标(即adOpenForwardOnly,这是速率最快的游标范例),此时对RecordCount的援用将一向前往0。
办理成绩的办法很复杂,只需把本来代码中的:
objRst.OpenstrSQL,objConn
改成:
objRst.OpenstrSQL,objConn,1
</p>源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码 |
|