В опубликованной некоторое время назад статье код подключения к базе данных можно вывести прямо в ASP-файле. На этот раз он был снова инкапсулирован.
Откройте vb, создайте новый элемент управления Activex, имя проекта — WebDb, имя модуля класса — GetInfomation,
ссылка на «Библиотеку Microsoft Activex Data Object 2.6».
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"
Если Err.Number <> 0 Тогда
GetConn = False
Иначе
GetConn = True
End If
End Function
'В соответствии с введенным идентификатором сотрудника получаем имя сотрудника
Public Function GetEmployeeName(strEmployeeID As Integer) As String
Dim strSql As String
Set rs = New ADODB.Recordset
strSql = "выбрать фамилию+имя из сотрудников, где идентификатор сотрудника=" и strEmployeeID
rs.Open strSql, Conn, adOpenStatic, adLockOptimistic
If rs.EOF then
GetEmployeeName = ""
Else
GetEmployeeName = rs.Fields(0)
End If
rs.Close
End Function
'Возвращает все списки сотрудников. Публичная
функция GetEmployeeList() как ADODB.Recordset.
Dim strSql As String
Set rs = New ADODB.Recordset
strSql = "выберите идентификатор сотрудника, фамилию, имя, должность, титул вежливости, дату рождения, дату найма, адрес, город от сотрудников"
rs.CursorLocation = adUseClient
rs.Open strSql, Conn, adOpenStatic
Установите GetEmployeeList = rs
'rs.Close
End Function
Мы
создаем новую страницу 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, если
Установите Rs=DataQuery.GetEmployeeList()
, если rs.eof, затем
Response.write «Нет данных, запросите»,
Response.end
end, если
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>BirthDate</td>"
Response.Write "<td>HireDate</td>"
Response.Write "<td>Address</td>"
Response.Write " <td>Город</td>"
Response.Write "</tr>"
Rs.AbsolutePage = Страница
Для iPage = 1 В Rs.PageSize
Response.Write "<TR align=right>"
для i=0 в Rs.fields.count-1
Response.Write "<td>"&Rs.fields.item( i)&"</td>"
следующий
ответ.Запись "</TR>"
Rs.MoveNext
Если Rs.EOF, то выход для
следующего
ответа.Запись "</TABLE></CENTER>"
%>
<Form name="myform" метод="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>
<%
рупийзакрыть
%>
Создайте новую страницу 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 Тогда
strID = Request. QueryString("Идентификатор")
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">
</ФОРМ>
</HEAD>
Несколько идей: Если ссылка на базу данных размещена в компоненте, то если вы хотите изменить ссылку на базу данных, вам придется перекомпилировать компонент, что может вызвать некоторые проблемы (но это рекомендуется, ведь база данных имя и имя сервера не будут часто меняться)
Если ссылка на базу данных размещена на странице ASP, значение можно будет передать компоненту через атрибуты, но безопасность будет снижена.
Действительно...
Ладно, эта статья закончена. Надеюсь, она будет полезна всем.
Будущая тема — как реализовать функции программы AspToDll. Будем реализовывать это шаг за шагом.