SAK 図書館
ASP VB Script 基礎実地編5 - データベース問い合わせ、リクエストパラメタ
■データベース問い合わせ - リクエストパラメタ取得 ・リクエストパラメタから、抽出条件を取得して、データベースを照会するに は、次のようにする。 ・リクエストは、フォームとクエリーストリングの両方から受け取れるように なっている。クエリーストリングで、この ASP を呼び出すには、 http://sak-main/w_test/test1.asp?p1=a001 と p1 にキーを指定する。 ASP 側では、「where キー = '" & p1 & "'"」と一致抽出の条件によって、 データをリストアップしている。 <%@ Language=VBScript %> <% const title = "データベース問い合わせ" const dsn = "dsn=SAK3_ADO;uid=SAK;pwd=SAK" const dcr = 3 '** adUseClient const dbi = "*" const dbf = "sak.テストm" const dbo = "order by キー" dim sql, rs, ct, tdal, i, s dim dbw, p1 '** パラメタ取得 on error resume next p1 = trim(request.querystring("p1")) if p1 = "" then p1 = trim(request.form("p1")) on error goto 0 if p1 <> "" then dbw = "where キー = '" & p1 & "'" end if '** データベース接続 if isempty(session("s3cn_ado")) then set session("s3cn_ado") = server.CreateObject ("ADODB.Connection") session("s3cn_ado").Open dsn session("s3cn_ado").CursorLocation = dcr end if '** クエリ発行 sql = "select " & dbi & " from " & dbf & " " & dbw & " " & dbo set rs = session("s3cn_ado").Execute(sql) %> <HTML> <HEAD> <TITLE><% = title %></TITLE> </HEAD> <BODY> <% '** データリストアップ response.write("<P>") response.write("<TABLE rules=ALL bgcolor=#b0b0b0 border=0 cellPadding=3 cellSpacing=2><TBODY>") response.write("<TR bgcolor=#d0d0d0>") response.write("<TD>リスト番号</TD>") for i = 0 to rs.fields.count - 1 response.write("<TD>" & rs(i).name & "</TD>") next response.write("</TR>") ct = 0 do until rs.eof ct = ct + 1 s = right("000000" & ct, 6) response.write("<TR bgcolor=#f0f0f0>") response.write("<TD>" & s & "</TD>") for i = 0 to rs.fields.count - 1 if rs(i).type <> 131 and rs(i).type <> 139 then tdal = "" else tdal = " align=right" end if response.write("<TD" & tdal & ">" & rs(i) & "</TD>") next response.write("</TR>") rs.movenext loop response.write("</TBODY></TABLE>") response.write("</P>") '** レコードセットクローズ rs.close %> </BODY> </HTML> ■データベース問い合わせ - 複数リクエストパラメタ取得 ・p1 で「キー like '??%'」、p2 で「データ1 >= ??」の抽出を行うには、 次のようにする。より現実的なコードになっている。 ・http://sak-main/w_test/test1.asp とパラメタを指定せずに呼び出すと、全件がリストアップされる。 ・http://sak-main/w_test/test1.asp?p1=c0 とパラメタを指定して呼び出すと、キーの先頭が「c0」で始まるものが、 1 件リストアップされる。 ・http://sak-main/w_test/test1.asp?p2=104 とパラメタを指定して呼び出すと、データ1 が 104 以上のものが、 3 件リストアップされる。 ・http://sak-main/w_test/test1.asp?p1=e&p2=104 とパラメタを指定して呼び出すと、キーが「e」で始まり、データ1 が 104 以上のものが、1 件リストアップされる。 少し、テストデータの中身が悪い。e010 などのデータを追加してテストす ると、より効果的な問い合わせ実習ができる。 <%@ Language=VBScript %> <% const title = "データベース問い合わせ" const dsn = "dsn=SAK3_ADO;uid=SAK;pwd=SAK" const dcr = 3 '** adUseClient const dbi = "*" const dbf = "sak.テストm" const dbo = "order by キー" dim sql, rs, ct, tdal, i, s dim dbw, quw, p1, p2 '** パラメタ取得 on error resume next p1 = trim(request.querystring("p1")) if p1 = "" then p1 = trim(request.form("p1")) p2 = trim(request.querystring("p2")) if p2 = "" then p2 = trim(request.form("p2")) on error goto 0 if p1 <> "" then dbw = dbw & " and キー like '" & p1 & "%'" if p2 <> "" then dbw = dbw & " and データ1 >= " & p2 if dbw <> "" then quw = mid(dbw, 6) dbw = "where " & quw end if if quw = "" then quw = "全件" '** データベース接続 if isempty(session("s3cn_ado")) then set session("s3cn_ado") = server.CreateObject ("ADODB.Connection") session("s3cn_ado").Open dsn session("s3cn_ado").CursorLocation = dcr end if '** クエリ発行 sql = "select " & dbi & " from " & dbf & " " & dbw & " " & dbo set rs = session("s3cn_ado").Execute(sql) %> <HTML> <HEAD> <TITLE><% = title %></TITLE> </HEAD> <BODY> <% '** データリストアップ response.write("<P>") response.write("抽出条件 - " & quw & "<BR><BR>") response.write("<TABLE rules=ALL bgcolor=#b0b0b0 border=0 cellPadding=3 cellSpacing=2><TBODY>") response.write("<TR bgcolor=#d0d0d0>") response.write("<TD>リスト番号</TD>") for i = 0 to rs.fields.count - 1 response.write("<TD>" & rs(i).name & "</TD>") next response.write("</TR>") ct = 0 do until rs.eof ct = ct + 1 s = right("000000" & ct, 6) response.write("<TR bgcolor=#f0f0f0>") response.write("<TD>" & s & "</TD>") for i = 0 to rs.fields.count - 1 if rs(i).type <> 131 and rs(i).type <> 139 then tdal = "" else tdal = " align=right" end if response.write("<TD" & tdal & ">" & rs(i) & "</TD>") next response.write("</TR>") rs.movenext loop response.write("</TBODY></TABLE>") response.write("</P>") '** レコードセットクローズ rs.close %> </BODY> </HTML> ■ASP VB Script 基礎実地編資料
■ASP VB Script 基礎編資料
■ASP VB Script ADO + SQL 応用編資料
■ASP VB Script oo4o + SQL 応用編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料