2011-02-24 215 views
2

下面的代碼是如何工作的?我從來沒有見過這樣做的更新。我總是這樣說:更新SQL Server表

http://www.w3schools.com/sql/sql_update.asp


sqlText = "SELECT * FROM pricing WHERE pid=1" 
rsx.Open sqlText, cnx, 1, 2 

if Not rsx.EOF then 

    rsx("new_us") = Request.Form("new_us") 
    rsx("new_us_desc") = Rtrim(Request.Form("new_us_desc")) 
    rsx("new_ca") = Request.Form("new_ca") 
    rsx("new_ca_desc") = Rtrim(Request.Form("new_ca_desc")) 
    rsx("new_int") = Request.Form("new_int") 
    rsx("new_int_desc") = Rtrim(Request.Form("new_int_desc")) 
    rsx("conv_us") = Request.Form("conv_us") 
    rsx("conv_us_desc") = Rtrim(Request.Form("conv_us_desc")) 
    rsx("conv_ca") = Request.Form("conv_ca") 
    rsx("conv_ca_desc") = Rtrim(Request.Form("conv_ca_desc")) 
    rsx("conv_int") = Request.Form("conv_int") 
    rsx("conv_int_desc") = Rtrim(Request.Form("conv_int_desc")) 
    rsx("ren_us") = Request.Form("ren_us") 
    rsx("ren_us_desc") = Rtrim(Request.Form("ren_us_desc")) 
    rsx("ren_ca") = Request.Form("ren_ca") 
    rsx("ren_ca_desc") = Rtrim(Request.Form("ren_ca_desc")) 
    rsx("ren_int") = Request.Form("ren_int") 
    rsx("ren_int_desc") = Rtrim(Request.Form("ren_int_desc")) 
    rsx.Update 

end if 

rsx.Close 
cnx.Close 

Set rsx = Nothing 
Set cnx = Nothing 

感謝

佈雷特

+0

對不起,標題應該是MS SQL表。 ..謝謝 – 2011-02-24 18:32:57

+0

這是什麼類型的文件?這不僅僅是SQL,它嵌入在其他類型的代碼中。 – Dubmun 2011-02-24 18:34:49

+1

看起來像VB 5/6或經典的ASP(VBScript)給我。 – Dean 2011-02-24 18:38:11

回答

1

首先執行rsx.Open的查詢。 cnx是與db的連接,參數值1是CursorType = adOpenKeyset,參數值2是LockType = adLockPessimistic

sqlText = "SELECT * FROM pricing WHERE pid=1" 
rsx.Open sqlText, cnx, 1, 2 

rsxRecordset(COM對象),它保存返回的行。 if Not rsx.EOF then檢查您確實至少有一行,否則編輯將失敗。

rsx("new_us") = Request.Form("new_us")Recordset中的字段分配新值。

最後rsx.Update將修改的字段保存到數據庫。 cnx使用的OLE DB提供程序構建發送到數據庫的更新語句。

所以基本的工作流程是:

  1. 從數據庫
  2. 修改排
  3. 提取一行送行回DB
+0

感謝你們兩位的回答。我感謝你的時間。 – 2011-02-26 14:42:39

0

此:http://www.w3schools.com/ado/ado_ref_recordset.asp應該幫助;)

它是一個ADO記錄集(不是ADO.NET)。通過記錄集(本例中爲rsx),您可以訪問查詢的字段。通過更改該值,可以通過Update方法更新數據庫。

+0

是的,它是嵌入在ASP頁面中的SQL的經典ASP。 – 2011-02-25 00:57:24

+0

他們以SELECT語句開始,檢查是否存在該記錄,然後更新記錄。這會被認爲是執行UPDATE的最佳方式嗎?感謝Brett – 2011-02-25 01:02:12

+0

我不知道這是否是最好的方法,但最大的好處是我們無需管理更新的實施。通過利弊,現在它是一個相當古老的技術,最好轉向效率更高的ADO.NET。 – Xavinou 2011-02-25 07:43:18