推荐一篇不错的新手asp编程的基本法则 |
本文标签:asp,编程,基本法则 一、新手常犯的错误 在论坛看到很多帖子代码中都有一个共同的基本错误,字段类型错误 。 程序和数据库是紧紧相连的,数据库字段文本型或时间型的都使用单引号 比如下面这段修改语句: conn.execute "update Counts set counts="&counts&" where num="&num&" and Atime="&now()&"" 等号左边都是字段名,等号右边是传值过来的变量名,counts 字段是文本型,所以写入时必须前后加单引号,无论是写入还是查询都一样,后面的查寻语句中,num 字段是数字型,所以前后就没有单引号了,Atime 字段是时间型所以前后也要加单引号 。 最重要的是以ID查询,ID字段是唯一的并且数字类型,很明显查询ID号时前后也不能有单引号 conn.execute "update Counts set counts="&counts&" where id="&id&"" 错误写法 conn.execute "update Counts set counts="&counts&" where id="&id 正确写法 二、ACCESS 数据库连接 通常数据库连接有两种方式,新手基本不知道用哪一种方式,或者在什么情况下用哪一种,又或者不知道两者的原理 ①直接连接数据库文件 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("database/yanhang.mdb") ②通过数据源来连接数据库文件 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("database/yanhang.mdb") 那么,两者到底哪一个好呢,当然是第二种,因为第一种其实就是客户端浏览器直接读取数据库的,所以安全方面差很多,第二种通过数据源连接,是以服务器数据源工具连接的,与客户端没关系,所以数据库不会暴露给客户端,安全系数高很多 。 ACCESS 数据库对应程序的应用:①直接连接数据库文件 conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("database/yanhang.mdb") 这样的数据库连接方式,添加语句: set rs=server.createobject("adodb.recordset") (正确写法) rs.open "select * from dndj",conn,1,3 rs.addnew rs("bh") = bh rs("bm") = bm rs("xm") = xm rs("xsq") = xsq rs.update rs.close set rs=nothing set rs=server.createobject("adodb.recordset") (错误写法) sql="insert into dndj(bh,bm,xm,xsq) values(bh,bm,xm,xsq)" rs.open sql,conn,1,3 ACCESS 数据库对应程序的应用:②通过数据源来连接数据库文件 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("database/yanhang.mdb") 这样的数据库连接方式,添加语句: conn.execute "insert into dndj(bh,bm,xm,xsq) values("&bh&","&bm&","&xm&","&xsq&")" (正确写法) set rs=server.createobject("adodb.recordset") (错误写法) sql="insert into dndj(bh,bm,xm,xsq) values(bh,bm,xm,xsq)" rs.open sql,conn,1,3 三、双引号的应用 通常我们写超级连接这样 <a href="abc.asp?id=<%=rs("id")%>">超级连接</a> 但要是把这个超级连接编译进asp里面呢 response.write "<a href=""abc.asp?id="&rs("id")&""">超级连接</a>" (正确写法) response.write "<a href=abc.asp?id="&rs("id")&">超级连接</a>" (正确写法) response.write "<a href=abc.asp?id="&rs("id")&">超级连接</a>" (正确写法) response.write "<a href="abc.asp?id=<%=rs("id")%>">超级连接</a>" (错误写法) response.write "<a href="abc.asp?id="&rs("id")&"">超级连接</a>" (错误写法) 表单编译进asp里 <input type="text" name="id" value="<%rs("id")%>" /> response.write "<input type=""text"" name=""id"" value="""&rs("id")&""" />" (正确写法) 注意:这里有三个双引号 response.write "<input type=text name=id value="&rs("id")&" />" (正确写法) response.write "<input type=text name=id value="&rs("id")&" />" (正确写法) response.write "<input type="text" name="id" value="<%=rs("id")%>" />" (错误写法) response.write "<input type="text" name="id" value=""&rs("id")&"" />" (错误写法) |