ASP编程:ASP技能TOP 10(一)
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。技能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>ASP.NET和ASP的比较,技术上比较已经没什么可说的了.新一代在大部分程度来说当然是比旧一代好了.关键看你对所做软件的理解了.因人而定.会写的话也可能比ASP.NET写得更有效率和更方便重用 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效 那么,ASP.Net有哪些改进呢? 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页:
[1]