少し前に公開された記事では、データベース接続コードを ASP ファイルに直接表示できます。今回もまたカプセル化されました。
vb を開き、新しい Activex コントロールを作成します。プロジェクト名は WebDb、クラス モジュール名は GetInfomation、
「Microsoft Activex Data Object 2.6 Library」を参照
Private Conn As ADODB.Connection
Private Rs As ADODB.Recordset
' 機能: データベースが正しく接続されているかどうかを確認します
' 接続文字列は変更できます
Public Function GetConn()
Conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source =yang"
If Err.Number <> 0 then
GetConn = False
Else
GetConn = True
End If
End Function
'入力された従業員IDに応じて従業員名を取得
Public Function GetEmployeeName(strEmployeeID As Integer) As String
Dim strSql As String
Set rs = New ADODB.Recordset
strSql = "従業員から姓+名を選択します (ここで、EmployeeID= & strEmployeeID)
rs.Open strSql、Conn、adOpenStatic、adLockOptimistic
If rs.EOF then
GetEmployeeName = ""
Else
GetEmployeeName = rs.Fields(0)
End If
rs.Close
End Function
'すべての従業員リストを返すPublic
Function GetEmployeeList() As ADODB.Recordset
Dim strSql As String
Set rs = New ADODB.Recordset
strSql = "従業員から EmployeeID、LastName、FirstName、Title、TitleOfCourtesy、BirthDate、HireDate、Address、City を選択"
rs.CursorLocation = adUseClient
rs.Open strSql、Conn、adOpenStatic
Set GetEmployeeList = rs
'rs.Close
終了関数
テスト用の新しい ASP ページ「TestWebDb1.asp」を作成します
。
主に GetEmployeeList() メソッド
<HEAD>
をテストするために使用されます。
<!- テスト ページ ->
<!- 機能: テスト コンポーネント ->
<!- 作成者: Tornado.NET ->
<%
Dim strTopic
Dim strTitle
Dim strContents
Dim DataQuery
Dim Rs
Dim Myself
Myself=Request.ServerVariables("script_name")
Set DataQuery=Server.CreateObject("WebDb.GetInfomation")
Set Rs=Server.CreateObject("adodb.recordset")
%>
<TITLE>
データ コンポーネントのテスト ページ
</TITLE>
<H1><CENTER>データ コンポーネント ( www.downcodes.com) へようこそ</CENTER></H1 >
<%
Dim Flag
Flag=DataQuery.GetConn()
Flag=false の場合、
ResPonse.Write 「データベースへのリンクがありません。チェックしてください」
ResPonse.End
End if
Set Rs=DataQuery.GetEmployeeList()
if rs.eof then
Response.write "データがありません。クエリしてください"
Response.end
end if
Rs.PageSize =3
Page= CLng(Request.QueryString ("ページ"))
ページ < 1 の場合、ページ = 1
ページ > Rs.PageCount の場合、ページ = Rs.PageCount
Response.Write "<CENTER><TABLE BORDER=1 cellpacing=0 cellpadding=2>"
Response.Write "<tr BGCOLOR=silver align=center>"
Response.Write "<td>EmployeeID</TD>"
Response.Write "<td>LastName</td>"
Response.Write "<td>FirstName</td>"
Response.Write "<td>Title</a></td>"
Response.Write "<td>TitleOfCourtesy</ a></td>"
Response.Write "<td>生年月日</td>"
Response.Write "<td>入社日</td>"
Response.Write "<td>住所</td>"
Response.Write " <td>市</td>"
Response.Write "</tr>"
Rs.AbsolutePage = Page
For iPage = 1 To Rs.PageSize
Response.Write "<TR align=right>"
for i=0 to Rs.fields.count-1
Response.Write "<td>"&Rs.fields.item( i)&"</td>"
next
Response.Write "</TR>"
Rs.MoveNext
If Rs.EOF then Exit For
next
Response.Write "</TABLE></CENTER>"
%>
<Form name="myform" method="get">
<%If Page <> 1 then%>
<A HREF="<%=Myself%>?Page=1">最初のページ</A>
<A HREF = "<%=Myself%>?Page=<%=(Page-1)%>">前のページ</A>
<%End If%>
<%If Page <> Rs.PageCount then%>
<A HREF= "<%=Myself%>?Page=<%=(Page+1)%>">次のページ</A>
<A HREF="<%=Myself%>?Page=<%=Rs. PageCount%> ">最後のページ</A>
<%End If%>
ページ:<FONT COLOR="Red"><%=Page%>/<%=Rs.PageCount%></FONT>
</Form>
<%
Rs.close
%>
新しい ASP ページ「TestWebDb2.asp」を作成します。主に GetEmployeeName() メソッドのテストに使用される
このページは比較的単純な
<HEAD>
<!- テスト ページ ->
<!- 機能: テスト コンポーネント ->
<!- 作成者: Tornado.NET ->
<%
Dim DataQuery
Dim strID
Dim strResult
Set DataQuery=Server.CreateObject("WebDb.GetInfomation")
%>
<タイトル>
データコンポーネントのテストページ
</TITLE>
<H1><CENTER>データ コンポーネント ( www.downcodes.com) へようこそ</CENTER></H1 >
<%
If Len(Request.QueryString("ID")) > 0 then
strID = リクエスト。クエリ文字列("ID")
Dim Flag
Flag=DataQuery.GetConn()
Flag=false の場合
ResPonse.Write "データベースへのリンクがありません。確認してください"
ResPonse.End
End if
strResult=DataQuery.GetEmployeeName(cint(strID))
if strResult="" then
Response.Write "申し訳ありませんが、そのような番号はありません。問い合わせてください"
Response.End
else
ResPonse.Write strResult
end if
End If
%>
<FORM NAME="MyForm">
<INPUT TYPE=TEXTBOX NAME="EmpID" SIZE=40><P>
<INPUT LANGUAGE="VBScript"
TYPE="BUTTON"
VALUE="検索"
ONCLICK="window.location.href = 'TestWebDb2.asp?ID=' _
+ MyForm.EmpID.Value">
</FORM>
</HEAD>
いくつかのアイデア: データベース リンクがコンポーネントに配置されている場合、データベース リンクを変更したい場合は、コンポーネントを再コンパイルする必要があり、問題が発生する可能性があります (ただし、データベースを再コンパイルすることをお勧めします)名前とサーバー名は頻繁に変更されません)
データベース リンクが ASP ページに配置されている場合、属性を介して値をコンポーネントに渡すことができますが、セキュリティは低下します。
本当に...
さて、この記事が皆さんのお役に立てれば幸いです。
今後のトピックは、AspToDll ソフトウェアの機能を実装する方法です。