FAQ about ASP

═α±≥ε ∙σσ ε∩Φ±αφΦσ  Γδ σ≥±  ≡στ≤δⁿ≥α≥ε∞ δΦ≈φ√⌡ ²Ω±∩σ≡Φ∞σφ≥εΓ Φ φαßδ■ΣσφΦΘ αΓ≥ε≡α Φ φσ ∩≡σ≥σφΣ≤σ≥ φα ∩εδφε≥≤, ≥ε≈φε±≥ⁿ Φ Γ±σεß·σ∞δσ∞ε±≥ⁿ. ≡αΣΦ Σε±≥≤∩φε±≥Φ φσΩε≥ε≡√σ ≥σ≡∞Φφ√ Φ Γ√ΩδαΣΩΦ Σαφ√ Γ ≤∩≡ε∙σφφε∞ ΓΦΣσ. ∩ε Γετ∞εµφε±≥Φ ≥αΩΦσ ∞σ±≥α ±φαßµσφ√ ±±√δΩα∞Φ φα ßεδσσ ∩εΣ≡εßφεσ ε∩Φ±αφΦσ.

1. ε≥δΦ≈Φσ ε∩Φ±αφΦ  ∞σ≥εΣεΓ Γ vbscript Φ javascript
2. ΩαΩ επ≡αφΦ≈Φ≥ⁿ Ωεδ-Γε Γ√ΓεΣΦ∞√⌡ ±≥≡εΩ ∩≡Φ Γ√∩εδφσφΦΦ τα∩≡ε±α?
3. ∩εδστφ√Θ ≥≡■Ω: ΩαΩ ε≡παφΦτεΓα≥ⁿ Γ√ΓεΣ εß·σΩ≥εΓ (φα∩≡Φ∞σ≡, Ωα≡≥ΦφεΩ) Γ ≥αßδΦ÷σ ∩ε Φ⌡ URL'α∞
4. ß√≥ⁿ ε±≥ε≡εµφ√∞ ± RecordCount
5. ΩαΓ√≈ΩΦ
6. ΓφΦ∞αφΦσ: ≥Φ∩√ char Φ varchar
7. ∩ε ∩εΓεΣ≤ ΣδΦφ√ ±≥≡εΩΦ
8. δ≤≈°σ ∩εδⁿτεΓα≥ⁿ±  ±ΓεΘ±≥Γε∞ .value
9. "σ±δΦ RecordSet σ±≥ⁿ, ≥ε σπε ±≡ατ≤ φσ≥..."

1. ╬≥δΦ≈Φσ ε∩Φ±αφΦ  ∞σ≥εΣεΓ Γ vbscript Φ javascript

┬ε ≈≥ε   ±≡ατ≤ µσ Γδ ∩αδ± , ΩεπΣα ταΣ≤∞αδ ∩σ≡σΓεΣΦ≥ⁿ asp-⌠αΘδ√ Φτ vbscript φα javascript, ²≥ε ε≥δΦ≈Φσ ±Φφ≥αΩ±Φ≈σ±Ωεπε ε⌠ε≡∞δσφΦ  ∞σ≥εΣεΓ Γ ≡ατφ√⌡ ±Ω≡Φ∩≥- τ√Ωα⌡. σ±δΦ Γ vbscript ≡αßε≥αδα ±≥≡εΩα:

rs.MoveNext

≥ε Γ javascript ±εε≥Γσ≥±≥Γ≤■∙α  ±≥≡εΩα

rs.MoveNext;

Γ√ΣαΓαδα ±≥≡αφφ≤■ ε°ΦßΩ≤ ≥Φ∩α "εß·σΩ≥ φσ ∩εΣΣσ≡µΦΓασ≥ Σαφφεσ ±ΓεΘ±≥Γε ΦδΦ ∞σ≥εΣ". "± ΩαΩεΘ ±≥α≥Φ φσ ∩εΣΣσ≡µΦΓασ≥?" - Σε±≥α≥ε≈φε Σεδπε ±∩≡α°ΦΓαδ ±σß   , ∩εΩα φσ ΣεπαΣαδ±  ∩≡Φ∩Φ±α≥ⁿ ∩α≡≤ ±ΩεßεΩ :):

rs.MoveNext();

2. ╩αΩ επ≡αφΦ≈Φ≥ⁿ Ωεδ-Γε Γ√ΓεΣΦ∞√⌡ ±≥≡εΩ ∩≡Φ Γ√∩εδφσφΦΦ τα∩≡ε±α?

╟α±≤φ≤≥ⁿ ≡στ≤δⁿ≥α≥ τα∩≡ε±α Γ ∞α±±ΦΓ φ≤µφεπε ≡ατ∞σ≡α; Γ√Σα≥ⁿ φα ²Ω≡αφ ±εΣσ≡µΦ∞εσ ∞α±±ΦΓα. ╧≡Φ∞σ≡:

<% ' ╬≥Ω≡√≥Φσ ßατ√ Σαφφ√⌡, ⌠ε≡∞Φ≡εΓαφΦσ τα∩≡ε±α.
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "ADOSamples"
sql="SELECT * FROM Orders"
Set RS = Conn.Execute(sql)
%>
<TABLE BORDER=1>
<TR>
<% For i = 0 to RS.Fields.Count - 1 ' 
Γ√ΓεΣ Φ∞σφ ∩εδσΘ%>
<TD><B><% = RS(i).Name %></B></TD>
<% Next %>
</TR>
<%
' ╧ε∞σ±≥Φ≥ⁿ ∩σ≡Γ√σ 100 ±≥≡εΩ τα∩≡ε±α Γ 2-∞σ≡φ√Θ 
variant-∞α±±ΦΓ
v=RS.GetRows(100)
RS.close ' ταΩ≡√≥ⁿ εß·σΩ≥ ≥Φ∩α RecordSet
Conn.close ' ταΩ≡√≥ⁿ εß·σΩ≥ ≥Φ∩α Connection
%>

3. ╧εδστφ√Θ ≥≡■Ω: ΩαΩ ε≡παφΦτεΓα≥ⁿ Γ√ΓεΣ εß·σΩ≥εΓ (φα∩≡Φ∞σ≡, Ωα≡≥ΦφεΩ) Γ ≥αßδΦ÷σ ∩ε Φ⌡ URL'α∞

╬ßετΓα≥ⁿ ±εε≥Γσ≥±≥Γ≤■∙Φ∞ εß≡ατε∞ Φ∞  ∩εδ , ±εΣσ≡µα∙σπε URL, φα∩≡Φ∞σ≡ URLimage.

┬ ∩≡ε÷σ±±σ Γ√ΓεΣα Σαφφ√⌡ ∩≡εΓσ≡ ≥ⁿ Φ∞  ∩εδ  φα φαδΦ≈Φσ ∩εΣ±≥≡εΩΦ "URL" Φ Γ ταΓΦ±Φ∞ε±≥Φ ε≥ ²≥επε Γ√ΓεΣΦ≥ⁿ ±εΣσ≡µΦ∞εσ ∩εδ  ΩαΩ ≥σΩ±≥ ΦδΦ ΩαΩ ±±√δΩ≤, ΦδΦ ΩαΩ εß·σΩ≥, φα Ωε≥ε≡√Θ ²≥α ±±√δΩα ≤Ωατ√Γασ≥. ╧≡Φ∞σ≡:

<%
' Note: The following is a bit of a hack...If the 
column name contains ' the string "URL"
 anywhere in it, assume it is a URL to a gif or jpg
' file and generate the HTML to get the image
 and display. This works ' for the Products table
  in the Adventure Works database, but is not a
' general purpose solution.
If InStr(RS(i).Name, "URL") > 0 Then
Response.Write "<img src=""" & RS(i) & """>"
Else Response.Write RS(i) End If %>

4. ┴√≥ⁿ ε±≥ε≡εµφ√∞ ± RecordCount

╩εδΦ≈σ±≥Γε τα∩Φ±σΘ Γ ∩εδ≤≈σφφε∞ τα∩≡ε±σ ∞εµφε ε∩≡σΣσδΦ≥ⁿ ± ∩ε∞ε∙ⁿ■ property RecordCount:

<%
sql="SELECT * FROM Orders"
Set RS = Conn.Execute(sql)
RS.RecordCount
%>

╬ΣφαΩε ²≥ε τφα≈σφΦσ ∞εµσ≥ ≡αΓφ ≥ⁿ±  -1 ≥εδⁿΩε Φτ-τα ≥επε, ≈≥ε ADO Γ Φ±∩εδⁿτ≤σ∞εΘ Ωεφ⌠Φπ≤≡α÷ΦΦ φσ ∞εµσ≥ ε∩≡σΣσδΦ≥ⁿ ΩεδΦ≈σ±≥Γε ±≥≡εΩ.

5. ╩αΓ√≈ΩΦ

E±δΦ Γ τα∩≡ε±σ Φ±∩εδⁿτ≤■≥±  ±≥≡εΩεΓ√σ τφα≈σφΦ , ≥ε δ≤≈°σ Φ±∩εδⁿτεΓα≥ⁿ ' (α∩ε±≥≡ε⌠), α φσ " (ΣΓεΘφεΘ α∩ε±≥≡ε⌠). ═σ±∞ε≥≡  φα ≥ε, ≈≥ε Γ ISQL/w Γ√∩εδφ ■≥±  εßα τα∩≡ε±α εΣΦφαΩεΓε, Γ asp (ß√≥ⁿ ∞εµσ≥ Γ ²≥ε∞ ΓΦφεΓα≥ javascript) ΣΓεΘφεΘ α∩ε±≥≡ε⌠ Γ√τ√Γασ≥ ε°ΦßΩ≤. ═α∩≡Φ∞σ≡ δ≤≈°σ ≥αΩ:

<%
sql="SELECT * FROM Orders WHERE id = '"+id+"'";
%>

α φσ ≥αΩ:

<%
sql="SELECT * FROM Orders WHERE id = \""+id+"\"";
%>

6. ┬φΦ∞αφΦσ: ≥Φ∩√ char Φ varchar

C≡αΓφΦΓα  τφα≈σφΦ  ∩σ≡σ∞σφφεΘ, ∩εδ≤≈σφφεΘ Φτ τα∩εδφσφφεΘ ⌠ε≡∞√, Φ ΦτΓδσ≈σφφεΘ Φτ ∩εδ  ≥αßδΦ÷√ ≥Φ∩α char   φσ ∞επ ΣεßΦ≥ⁿ± , ≈≥εß√ javascript ∩ε±≈Φ≥αδ Φ⌡ ≡αΓφ√∞Φ, ⌡ε≥  Γφσ°φσ εφΦ Γ√πδ ΣσδΦ ±εΓσ≡°σφφε εΣΦφαΩεΓ√∞Φ. ╧≡Φ≈σ∞ ± ε±≥αδⁿφ√∞Φ ∩σ≡σ∞σφφ√∞Φ ß√δε Γ±σ φε≡∞αδⁿφε. ╬Ωαταδε±ⁿ, ≈≥ε εφΦ ±≡αΓφΦΓαδΦ±ⁿ ± ∩εδ ∞Φ ≥Φ∩α varchar. ┬±∩ε∞φΦΓ ∩ε≈≥Φ ταß√≥√σ τφαφΦ  ε ≥Φ∩α⌡ ∩εδσΘ ±≤ßΣ oracle,   ∩≡Φ°σδ Ω Γ√ΓεΣ≤, ≈≥ε ΓΦφεΓα≥ ≥Φ∩ char, τφα≈σφΦσ Ωε≥ε≡επε Φ∞σσ≥ ΣδΦφ≤ ≥αΩ≤■, ΩαΩ≤■ εß· ΓΦδΦ Σδ  ∩εδ . ╟φα≈σφΦσ µσ ≥Φ∩α varchar Φ∞σσ≥ ΣδΦφ≤ Γ ±εε≥Γσ≥±≥ΓΦΦ ± ±εΣσ≡µα∙σΘ±  ±≥≡εΩεΘ.

╧≡ε∞≤≈ΦΓ°Φ±ⁿ ± ε∩≡σΣσδσφΦσ∞ ΣδΦφ√ ∩σ≡σ∞σφφεΘ,   ≡σ°Φδ, ≈≥ε δ≤≈°σ Γ±σπε Γ ≥αßδΦ÷α⌡ φσ Φ±∩εδⁿτεΓα≥ⁿ ≥Φ∩ char ßστ ε±εßεΘ φσεß⌡εΣΦ∞ε±≥Φ.

7. ╧ε ∩εΓεΣ≤ ΣδΦφ√ ±≥≡εΩΦ

╧σ≡σ∞σφφ√σ, ∩εδ≤≈σφφ√σ Φτ ⌠ε≡∞√ ±∩ε±εßε∞:

name = Request.form("name");

ΦδΦ Φτ ßατ√ Σαφφ√⌡:

sql = "SELECT name, passw, email FROM persons WHERE 
email = '"+email+"'";
rs = conn.Execute(sql);
name = rs(0);

φα Γε∩≡ε± name.length ε≥Γσ≈α■≥ "φσΦτΓσ±≥φε". ╩επΣα ≤ ∞σφ  Γ±σ µσ ΓετφΦΩδα φσεß⌡εΣΦ∞ε±≥ⁿ Γ ε∩≡σΣσδσφΦΦ ΣδΦφ√ ≥αΩΦ⌡ τφα≈σφΦΘ,   ∩ε±≥≤∩Φδ ≥αΩ:

var name = "";
name += Request.form("name");

var name = "";
sql = "SELECT name, passw, email FROM persons 
WHERE email = '"+email+"'";
rs = conn.Execute(sql);
name += rs(0);

8. ╦≤≈°σ ∩εδⁿτεΓα≥ⁿ±  ±ΓεΘ±≥Γε∞ .value

═≤µφε ß√≥ⁿ ε±≥ε≡εµφ√∞ ± εß·σΩ≥α∞Φ Recordet. ┼±δΦ Γ html σ∙σ ∞εµφε Γ√Γσ±≥Φ ∩σ≡σ∞σφφ≤■ ≥αΩ:

<%
rs = conn.Execute(sql);
%>
<%= rs(0)%>

≥ε, ≡αßε≥α  ± ∩σ≡σ∞σφφεΘ, ∞εµφε φα∩ε≡ε≥ⁿ±  φα φσ∩≡Φ ≥φε±≥Φ. ═α∩≡Φ∞σ≡, Γ√≡αµσφΦσ

(rs(0) == name)

Γ√Σα±≥ "δεµⁿ" ∩≡Φ ≥ε∞, ≈≥ε ∩≡Φ Γ√ΓεΣσ εßα τφα≈σφΦ  ß≤Σ≤≥ εΣΦφαΩεΓ√∞Φ. ╧≡αΓΦδⁿφσσ ±Σσδα≥ⁿ ≥αΩ:

(rs(0).value == name)

9. "┼±δΦ RecordSet σ±≥ⁿ, ≥ε σπε ±≡ατ≤ φσ≥..."

╬∩ ≥ⁿ ∩≡ε ε±≥ε≡εµφε±≥ⁿ ± εß·σΩ≥α∞Φ Recordet. ─ε∩≤±≥Φ∞ ∞√ Γ√τ√Γασ∞ ⌡≡αφΦ∞≤■ ∩≡ε÷σΣ≤≡≤:

CREATE PROCEDURE do_test1
    @num int AS
    select * from test where num = @num
    return 100

╧≡Φ φσΩε≥ε≡√⌡ τφα≈σφΦ ⌡ ∩α≡α∞σ≥≡α @num Σαφφα  ∩≡ε÷σΣ≤≡α ß≤Σσ≥ Γ√ΣαΓα≥ⁿ εΣφ≤ ΦδΦ ±≥≡ε≈Ω≤ Φτ ≥αßδΦ÷√ test, α ∩≡Φ Σ≡≤πΦ⌡ - φσ Γ√ΣαΓα≥ⁿ φΦ εΣφεΘ. ┼±δΦ ∞√ εß≡α≥Φ∞±  Ω rs, ∩εδ≤≈σφφε∞≤, φα∩≡Φ∞σ≡, ≥αΩΦ∞ ±∩ε±εßε∞:

rs = conn.Execute("do_test1 1");
rs.Close();

≥ε, φΦΩαΩΦ⌡ φσ∩≡Φ ≥φε±≥σΘ φσ ΓετφΦΩφσ≥.

┼±δΦ µσ ∩≡ε÷σΣ≤≡α ß≤Σσ≥ Γ√πδ Σσ≥ⁿ ≥αΩΦ∞ εß≡ατε∞:

CREATE PROCEDURE do_test2
    @num int AS
    if @num = 1
       select * from test where num = @num
       return 100
    else
       return 200

≥ε ε∩σ≡α≥ε≡√:

rs = conn.Execute("do_test2 1");
rs.Close();

± ≡≤Ω ±εΘΣ≤≥, α Γε≥:

rs = conn.Execute("do_test2 0");
rs.Close();

Γ√τεΓ≤≥ ε°ΦßΩ≤ φα Close():

ADODB.Recordset error '800a0e78'
Invalid operation on closed object.

 

Ω επδαΓδσφΦ■