ASP練習(xí)三 數(shù)據(jù)記錄的寫入與查詢 數(shù)據(jù)庫的基本操作無非是:查詢記錄,寫入記錄,刪除記錄,修改記錄。 一.記錄的寫入 先建立一個(gè)表單:(把下面文章保存為5.htm) <form name="form1" method="post" action="exa5.asp"> name <input type="text" name="name"><br> tel <input type="text" name="tel"><br> message <input type="text" name="message" value=""><br> <input type="submit" name="Submit" value="提交"> <input type="reset" name="Submit2" value="重置"> </form> 表單提交到exa5.asp,下面是exa5.asp的代碼: (把下面代碼保存為5.asp) <% set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb") name=request.form("name") tel=request.form("tel") message=request.form("message") exec="insert into guest(name,tel,message)values('"+name+"',"+tel+",'"+message+"')" conn.execute exec conn.close set conn=nothing response.write "記錄添加成功!" %> 在這里前面兩句我不說了,后面三句我也不說了,前面說過exec里面的是執(zhí)行的命令,添加記錄的比較繁,大家要仔細(xì)看。 insert into后面加的是表的名字,后面的括號里面是需要添加的字段,不用添加的或者字段的內(nèi)容就是默認(rèn)值的可以省略。注意,這里的變量一定要和ACCESS里面的字段名對應(yīng),否則就會出錯。values后面加的是傳送過來的變量。exec是一個(gè)字符串,"insert into guest(name,tel,message)values('"是第一段,在ASP里面不能嵌雙引號,所以可以用'代替雙引號,放在雙引號里面,連接兩個(gè)變量用+或者&所以"',"又是一段,中間夾了一個(gè)name就是表單傳來的變量,這樣就可以在這個(gè)變量外面加兩個(gè)'',表示是字符串了,后面的tel是數(shù)字型變量所以不需要外面包圍'',大家慢慢分析這句話,如果用表單傳來的數(shù)據(jù)代替變量名字的話這句話為(假設(shè)name="aaa",tel=111,message="bbb"):"insert into guest(name,tel,message)values('aaa',111,'bbb')"。 接下來的conn.execute 就是執(zhí)行這個(gè)exec命令,最后別忘記把打開的數(shù)據(jù)庫關(guān)閉,把定義的組件設(shè)置為空,這樣可以返回資源。 下面幾條語句用于關(guān)閉數(shù)據(jù)庫的代碼: rs.close set rs=nothing conn.close set conn=nothing 記住,次序不可以顛倒! 可以到數(shù)據(jù)庫里面去看一看,是不是多了記錄阿? 二.記錄的查詢 前次練習(xí)時(shí),我們用到下面這樣一個(gè)程序: <% set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb") exec="select * from guest" set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 %> 我們查詢的是所有的記錄,但是我們要修改、刪除記錄的時(shí)候不可能是所有記錄,所有我們要學(xué)習(xí)檢索合適的記錄。先看一條語句: a="aaa" b=1111110 exec="select * from guestbook where name='"+a+"'and tel="+b where后面加上的是條件,與是and,或是or,我想=,<=,>=,<,>的含義大家都知道吧。這句話的意思就是搜索name是“aaa”的,并且電話是“1111110”的記錄。還有一點(diǎn)就是如果要搜索一個(gè)字段里面是不是包含一個(gè)字符串就可以這么寫:where instr(name,a)也就是搜索name里面有a(aaa)這個(gè)字符串的人。 我這里的a,b,是常量,大家可以讓a,b是表單提交過來的變量,這樣就可以做一個(gè)搜索了。 下面大家看看這個(gè)代碼,理解一下:(把下面代碼存為6.htm文件) <form name="form1" method="post" action="exam6.asp"> 搜索:<br> name = <input type="text" name="name"> and tel= <input type="text" name="tel"> <br> <input type="submit" name="Submit" value="提交"> <input type="reset" name="Submit2" value="重置"> </form> exam6.asp(把下面代碼存為exam6.asp) <% name=request.form("name") tel=request.form("tel") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("data/guestbook.mdb") exec="select * from guest where name='"+name+"' and tel="+tel set rs=server.createobject("adodb.recordset") rs.open exec,conn,1,1 %> <html> <head> <title>無標(biāo)題文檔</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF" text="#000000"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <% do while not rs.eof %><tr> <td><%=rs("name")%></td> <td><%=rs("tel")%></td> <td><%=rs("message")%></td> <td><%=rs("time")%></td> </tr> <% rs.movenext loop %> </table> </body> </html> 首先在瀏覽器中輸入http://localhost/6.htm如下圖所示: ![]() 輸入數(shù)據(jù)庫中已有的姓名和電話aaa,1111110,單擊提交,結(jié)果如下圖所示: ![]() |