分類  >  WEB開發>ASP >

謝謝,小弟我這個初學者一個簡單的有關問題,能幫忙看一上么,多謝了

tags:    時間:2013-12-12 22:21:53
多謝各位高手,我這個菜鳥一個簡單的問題,能幫忙看一下么,謝謝了。
怎麼下面這段代碼在瀏覽器中運行后總是沒反應呢,好像進入死循環了一樣?

<%
yonghuming=request("yonghuming")
jiguan=request("jiguan")

'直連資料庫 參數為sql,conn,rs
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={SQL Server};Server=(local);Database=jishubu;UID=sa;PWD="
Set rs = Server.CreateObject("ADODB.RecordSet")
sql="select * from geren"
rs.open sql,conn,3,3

rs.movefirst
while not rs.eof

if (rs("姓名"))=yonghuming then
'response.Write(jiguan)
'response.Write(rs("籍貫"))
rs("籍貫")=jiguan
rs.update()

end if

rs.movenext
wend
%>

------解決方案--------------------
關於「總是沒反應呢,好像進入死循環」,解決思路:

1、頁面輸出
問題:你的代碼中除了if (rs("姓名"))=yonghuming then 。。。end if里之外,其他沒有任何輸出。所以,如果條件不滿足,頁面當然不反應;
解決:在其他位置輸出一些提示字元,如
<%
respinse.write("wangqi389的練習-------------><br>")
if (rs("姓名"))=yonghuming then 。。。end if
%>
2、資料庫操作
問題:1)沒有任何容錯判斷,造成你不知道資料庫是否正確連接。如果沒有連上,後續操作不就是無用功嗎?呵呵;2)操作之後也應該做判斷,看看資料庫數據操作時是否有錯誤;3)記錄集交叉操作:open了一個記錄集rs,然後在循環里不停的用update方法寫庫,容易出錯;4)即使釋放資料庫佔用的資源,做到即用即開、用后關閉;
解決:
1)加入必要的判斷
<%
err.clear
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "....................."
if conn.state<>1 then
  response.write("資料庫沒連上啊~~~~")
  //response.write(err.description)//僅在調試代碼時使用。以後要註釋掉
  set conn=nothing//釋放資源
  response.end()//終止程序運行,避免後續的不正確操作
end if
%>
2)加入必要的判斷
<%
if (rs("姓名"))=yonghuming then
'response.Write(jiguan)
'response.Write(rs("籍貫"))
rs("籍貫")=jiguan
err.clear
rs.update()
if err<>0 then
  response.write("<script>alert('success!')</script>")
  //response.write(err.description)//僅在調試代碼時使用。以後要註釋掉
else
  response.write("<script>alert('failed!')</script>")
end if
%>
3)使用conn的UPDATE語句取代rs.update
<%
if (rs("姓名"))=yonghuming then
  err.clear
  if len(jiguan)>0 then
    conn.execute("UPDATE [geren] SET [籍貫]='"&jiguan&"'")
  end if
  if err<>0 then
    response.write("<script>alert('success!')</script>")
    //response.write(err.description)//僅在調試代碼時使用。以後要註釋掉
  else
    response.write("<script>alert('failed!')</script>")
  end if
end if
%>
4)釋放資源
在確認不需要資料庫操作的地方:
<%
  if rs.state<>0 then rs.close
  set rs=nothing
  if conn.state<>0 then conn.close
  set conn=nothing

%>

隨手敲的代碼,有錯難免。主要是給個參考。

推薦閱讀文章

Bookmark the permalink ,來源:互聯網