SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK