打印本文 打印本文  关闭窗口 关闭窗口
ADO如何使用Update语法呢?(BIG5)
作者:采集员 文章来源:来源于网络 点击数: 更新时间:2005/9/10 12:31:57
Update

Update?述式,用?更新?料表中?位的?料值,可以使用WHERE?定特定的?件?算式,符合?件?算式的??才?被更新。

?法如下:

UPDATE ?料表
SET ?位新值
WHERE ?件?算式

?您要同?更新多???,或者在多??料表中更新???,就需要用到UPDATE?述式。

您可以同??更多??位的?料值,譬如,下例??品?料表中的所有??,?格打九折,??打七折:

UPDATE ?品

SET ?格 = ?格 * 0.9, ?? = ?? * 0.7

UPDATE?述式?不??生Recordset。?您使用UPDATE?述式更新??之後,?法?原原始值。因此,如果您想知道哪些???被更新,建?您先使用SELECT和相同的WHERE?件?算式?查??果,?定是您想更新的??後,然後再?行UPDATE?述式更新??。

?然您可以???的?料作?份??,?一您使用UPDATE?述式更新了??的??,您仍然可以?您的?份中救回?些??。

?我?看一?於ASP程式??中使用??SQL指令的例子。

譬如ASP程式?rs5.asp如下,[Update ?品 Set ?量 = ?量 + 10] 使用Update??品?料表中的所有??的?量?位?料加10:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"

sql = "Update ?品 Set ?量 = ?量 + 10"

Set a = conn1.Execute(sql)

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * from ?品 order by 代?"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代?</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名?</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">?格</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">?量</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代?")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名?")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("?格")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("?量")%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

conn1.Close

%>

</TABLE>

以上的 ASP程式?rs5asp,於用?端使用??器,???行?量?位?料加10的?果,每?行一次就??品?料表中的?量加10。

Update...Where

UPDATE?述式,可以使用WHERE?定特定的?更?件,符合?更?件的??才做?更。

譬如ASP程式?rs6.asp如下,[Update ?品 Set ?量 = ?量 + 10 where ?? = '??'] ?定特定的?更?件,[??] ?位? [??] 的??才??量加10:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"

sql = "Update ?品 Set ?量 = ?量 + 10 where ?? = '??'"

Set a = conn1.Execute(sql)

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * from ?品 order by ?? DESC"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代?</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名?</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">?量</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代?")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名?")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("?量")%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

conn1.Close

%>

</TABLE>

以上的 ASP程式?rs6.asp,於用?端使用??器,???行的?果,?示?量加10的??。

Update...Where...In

可以利用Update...Where...In找出重覆的??,譬如ASP程式?rs6.asp如下,[Update ?品 Set ?格 = ?格 - 100 where ?? = '??' and ?格 in (Select ?格 from ?品 where ?格 > 30000)] 表示?格 > 30000而 [??] ?位? [??] 的??才降?100:

 

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"

sql = "Update ?品 Set ?格 = ?格 - 100 where ?? = '??' and ?格 in (Select ?格 from ?品 where ?格 > 30000)"

Set a = conn1.Execute(sql)

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * from ?品 order by ?? DESC"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代?</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名?</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">?格</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代?")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名?")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("?格")%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

conn1.Close

%>

</TABLE>

以上的 ASP程式?rs6.asp,於用?端使用??器,???行的?果,?示?格 > 30000的??才降?100。



打印本文 打印本文  关闭窗口 关闭窗口