|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。初学|静态|网页|成绩关于用ASP手艺编程的初学者来讲,无从动手是第一感到,笔者已经有这么一段履历。经由一番"劫难"今后,你就会找到灵感。现将自己编程中堆集的一些履历,拟本钱文,贡献给读者。
1起首要进修一些例子程序。
接就任务后,不要自觉地急于编写代码,而是先看一下他人乐成的例子,然后在其上修正或仿照调试,如许会加速你熟习的速率。比方,关于ASP编程的教科书上常常有这么一个例子呈现,即显现体系以后工夫的语句:<%=now()%>,别看这么复杂的一条语句,里边却包括了ASP的编程头脑和格局,会给你后边的事情带来很年夜的匡助。好比说,测试IIS(InternetInformationServer)WEBSERVER是不是一般事情,用上边的一个语句测试就充足了。
2在WINDOWSNT上安装ODBC后,要测试和背景数据库的确连通后,再入手下手编程测试。
大概您没有看懂标题的意义,我在这里注释一下:好比说,背景数据库是ORACLE,那末在NTSEVER上起首要安装SQL*NET(或NET8),然后设置ODBC,断定和ORACLE数据库连通,能够用SQL*PLUS测试,还要选择和ORACLE数据库不异的字符集,这个事情要在注册内外完成。最初在ODBC里边测试和ORACLE数据库连通后,申明WEBSERVER到背景数据库真个事情就完成了,下边再入手下手编程事情。反过去,你若先编程,后做ODBC的事情,那末你没法调试程序是不是准确,大概年夜年夜下降编程效力。在ODBC设置中要选择MICROSOFTODBCFORORACLE,不要选择ORACLEODBCDRIVER,不然不克不及和数据库创建接洽。
在ASP程序中,和数据库毗连的语句是对照流动的,举比方下:
SetConn=Server.CreateObject("ADODB.Connection")
Conn.Open"odbclink","o7people","peoplepd"
在这里,odbclink是数据源的名字,能够说成是ODBC和数据库毗连的界说,o7people是ORACLE的一个用户名,peoplepd是用户o7people的暗码。
3纪录下堕落信息,寻觅纠错纪律。
在编程、调试过程当中,是一个堕落、纠错的轮回历程,可是工夫长了,会发明一些纪律,扫除毛病的效力会年夜年夜进步。
3.1堕落信息:
MicrosoftOLEDBProviderforODBCDrivers毛病80040e14
[Microsoft][ODBCdriverforOracle][Oracle]ORA-00933:SQLcommandnotproperlyended
/default.asp,行781
这类毛病,通常为在实行Conn.Execute("SQL语句")操纵时,所界说的"SQL语句"有成绩,反省此语句就可以发明成绩,如日期格局不合错误,等等。
zhezhong
3.2堕落信息:
ADODB.Field毛病800a0bcd
BOF或EOF中有一个是"真",大概以后的纪录已被删除,但使用程序请求操纵的是以后的纪录。
/lzjsblr.asp,行123
这个毛病,一样平常产生在实行以下语句的过程当中:
setRS=Conn.Execute("SQL语句")
varnum1=RS(0)
RS.CLOSE
所取的值RS(0)偶然义或偶然义,还要反省"SQL语句"的准确性。
3.3堕落信息:
MicrosoftVBScript编译器毛病毛病800a0409
未停止的字符串常量
/people/default.asp,行86
insert_sql=insert_sql&dwdm&","&d1&","&t1&","&t2&",
--------------------------------------------------------------------------^
次项毛病也是出在SQL语句的界说上,反省引号、单引号等的配对情形。
4下边是一个基于扫瞄器的网上用户注册挂号程序,笔者在里边使用了一些技能,贡献给感乐趣的读者。
<html>
<head>
……
<
<%和数据库毗连
SetConn=Server.CreateObject("ADODB.Connection")
Conn.Open"odbclink","o7people","peoplepd"
将选择的数据放当选择框
SetRS=Conn.Execute("SELECTdwmcFROMtab_dworderbydwdm")
%>
<%DoWhileNotRS.EOF%><option><%=RS(0)%></option>
<%
RS.MoveNext
Loop
RS.Close
%>
<%
界说变量
DimD1,D2,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,csrq,sqrq
事务触发按钮
B1="commit"
B2="return"
%>
<%
将信息初始化
SubReset()
D1=""
……
T9=date()
T10=""
EndSub
%>
<%
CallReset()
%>
<%
信息提交前提(触发前提)
ifRequest("B1")="commit"ThenSaveButton
D1=Request("D1")
setDWDM_RS=Conn.Execute("SELECTdwdmFROMtable_dwwheredwmc="&D1&"")
DWDM=DWDM_RS(0)
DWDM_RS.CLOSE
D2=Request("D2")
……
日期数据转换成ORACLE辨认的格局
csrq=DAY(T6)&"-"&month_array(Month(T6))&"-"&Year(T6)
sqrq=DAY(T9)&"-"&month_array(Month(T9))&"-"&Year(T9)
界说SQL语句
Sql_insert="INSERTINTOpeopleuser(dwdm,dwmc,sjks,tele,address,zipcode,xm,xb,csrq,peoplename,peoplepd,sqsj,bz)VALUES("
Sql_insert=Sql_insert&DWDM&","&D1&","&T1&","&T2&","&T3&","&T4&","
Sql_insert=Sql_insert&T5&","&D2&","&CSRQ&","&T7&","&T8&","&SQRQ&","
Sql_insert=Sql_insert&T10&")"
将信息进库
SetLFMC_R4=Conn.Execute(Sql_insert)
信息提交完成后,将屏幕信息初始化
callreset()
endif
%>
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1、计划计划
如今是模块化程序计划的世界,使用程序要完成的方针就是金字塔尖,举行程序计划计划的意义就在于,对组成金字塔的基本模块举行分别,计划得越具体,模块合作越明白,越简单分明下一步该做甚么,这比如搭积木的游戏,你能够把你的积木块组分解林林总总的外形,但起首要熟习每一个积木块的功效。
2、未雨绸缪
实战之前,先找几个样例程序研讨研讨,最最少分明怎样开首,怎样开头,别打无筹办之仗。
3、葵花宝典
做一份所用程序言语的精简列表,包含基础数据范例、各种运算符申明、基础语句布局、经常使用关头词(保存字)、经常使用函数(控件)申明等等。
4、自在自力
为你的使用程序创建一个独自的目次,如许既便利使用程叙文件的办理,并且假如你要给程序搬“家”,卷起展盖就能够走人了。
5、见名知意
程序再小,用的变量也不会少,变量起名应该见名知意是个老话题了,优点是不言而喻的。保举程序员利用“匈牙利定名法”,它会使你的起名事情变得十拿九稳,并且相称专业。
6、对称之美
中国人考究对称之美,用在编程里也很符合,假如程序里用到A轮回嵌套B判别,B判别又包括C轮回之类的布局,记住利用缩进法,让A:ENDDO对齐A:DO,B:ENDIF对齐B:IF……诸云云类,顺次缩进,总之对称就即是美妙加易读。
7、多加注解
对程序中自界说的变量、函数、子程序加以功效性的正文申明,别嫌贫苦。假如过了三月蒲月,连本人写的器材都看不分明了,那才年夜贫苦。
8、情况回护
假如使用程序必要修正体系设置,记住使用入手下手前先保留设置,使用停止后要恢复设置,万万别净化情况。
9、拿来主义
一团体的力气是无限的,人人的力气是无穷的,平常多看看他人的程序,假如可巧有好的履历,巧的办法,用得上的段子,无妨拿来。
10、忍者无敌
当你以为程序代码写的“百分百”准确,而程序编译实行百分百有偏差,你基础属于晕菜的时分,万万要忍,歇口吻,重头来,别保持!信任终极的成功是属于你的!
。。。。。。。。。。。。。。。。。。。。。
1.纪录集封闭之前再次翻开:
------------------------------------
sql="select*fromtest"
rs.opensql,conn,1,1
ifnotrs.eofthen
dimmyName
myName=rs("name")
endif
sql="select*frommyBook"
rs.opensql,conn,1,1
-------------------------------------
办理:在第二次rs.open之前先封闭rs.close
或
setrs1=server.createobject
rs1.opensql,conn,1,1
2,用SQL关头字做表名或字段名
-------------------------------------
sql="select*fromuser"
rs.opensql,conn,1,1
-------------------------------------
user为sql关头字
办理:改成
sql="select*from[user]"
3,用锁定体例往举行update
-------------------------------------
sql="select*from[user]"
rs.opensql,conn,1,1
rs.addnew
或
rs("userName")="aa"
rs.update
-------------------------------------
以后纪录集的翻开体例为只读
办理:
改成
rs.opensql,conn,1,3
4,在查询语句中接纳的对照字段值与字段范例不符
-----------------------------------------
sql="select*from[user]whereid="&myID&""
rs.opensql,conn,1,1
-----------------------------------------
假定表中计划ID为数字型,那末些时堕落。
办理:
sql="select*from[user]whereid="&myID
5,未反省变量值而堕落
-----------------------------------------
sql="select*from[user]whereid="&myID
rs.opensql,conn,1,1
-----------------------------------------
假定myID变量此时价为null,那末sql将成为
sql="select*from[user]whereid="
办理:
在后面加上
ifisnull(myID)then堕落提醒
6,未反省变量值范例而堕落
-----------------------------------------
sql="select*from[user]whereid="&myID
rs.opensql,conn,1,1
-----------------------------------------
假定id为数字型,myID变量此时价不为null,但为字符,好比myID此时为"aa"
那末sql将成为
sql="select*from[user]whereid=aa"
办理:
在后面加上
ifisnumeric(myID)=falsethen堕落提醒
这也能够无效避免sqlinjection毛病打击。
7,因为数据库文件地点目次的NTFS权限而引发的不克不及更新。数据库或工具为只读"毛病。
申明:
WIN2K体系持续了WINNT体系的NTFS权限。
关于体系中的文夹都有默许的平安设置。
而经由过程HTTP对WWW会见时的体系默许用户是iusr_盘算机名用户,它属于guest组。
当经由过程HTTP会见时,能够ASP或JSP,也或是PHP或.NET程序对数据举行修正操纵:
好比:
当翻开某一个文章时,程序设定,文章的浏览次数=原浏览次数+1
实行
conn.execute("updateartssetclicks=clicks+1whereid=n")
语句时,假如iusr_盘算机名用户没有对数据库的写权限时,就会堕落.
办理办法:
找到数据库地点目次
右键》属性》平安选项卡》设置iusr_盘算机名用户的写权限(固然,也能够是everyone)
我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。 |
|