классическое соединение asp

#html #sql #vbscript #asp-classic

#HTML #sql #vbscript #asp-классический

Вопрос:

Как бы вы поступили с получением пользовательского ввода для подключения через разные веб-страницы. Будет ли это сделано с помощью переменных сеанса или есть другой способ. Я не хочу настраивать соединения на каждой веб-странице, может кто-нибудь указать мне правильное направление, в чем провести исследование.

Вот фрагмент кода с сайта, на котором вообще нет строк подключения на веб-сайте.

 obj_ADO.ClearParameters
lng_RecSet1 = obj_ADO.GetFreeRecordset
obj_ADO.Recordset "A_combo_Permissions_select", adCmdStoredProc, obj_Session.int_CommandTimeout, lng_RecSet1
while obj_ADO.EOF(lng_RecSet1) = 0
  

и

если str_Action = obj_Session.str_FileName или len(str_Action)=0 или str_Action = str_SwitchLangText, то

 obj_ADO.ClearParameters
obj_ADO.AddParameter "SessionID", adChar, adParamInput, len(obj_Session.str_SessionID), obj_Session.str_SessionID
obj_ADO.AddParameter "PermissionID", adInteger, adParamInput, 8, lng_PermissionID
lng_RecSet = obj_ADO.GetFreeRecordset
obj_ADO.Recordset "A_PagePermissions_select", adCmdStoredProc, obj_Session.int_CommandTimeout, lng_RecSet
  

Ответ №1:

Я предполагаю, что вы имеете в виду соединение с базой данных? Если это так, нет, вы никогда не должны хранить какие-либо объекты ADO в переменной сеанса; это не будет масштабироваться, и поскольку они являются многопоточными, они не могут использовать пул потоков.

Вы должны подключаться и отключаться на каждой странице по мере необходимости (т.Е. Обычно только один раз).
Скрытое объединение в пул соединений означает, что это оказывает меньшее влияние, чем вы могли бы предположить.

Ответ №2:

Подключение к базе данных

обычно используется пользовательская библиотека, которая, по крайней мере, в качестве методов для open connection , execute query и close connection

Пример:

 <%
    '' Database file database.asp

    Sub openDB(query, objConn, objRS)

        Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.ConnectionString = "DSN=myCONNECTION.dsn"
        objConn.Open

        Set objRS = Server.CreateObject("ADODB.Recordset")
        objRS.Open query, objConn

    End Sub

    Sub CloseRs(objRS)

        objRS.Close
        Set objRS = Nothing

    End Sub

    Sub CloseDb(objConn)

        objConn.Close
        Set objConn = Nothing

    End Sub

%>
  

затем вы можете просто использовать:

 <!--#include file="header.inc"-->
<%
    Dim rs, conn
    openDb("SELECT Name FROM TBL_USERS", conn, rs)

    '' you can loop through the rs object now
    while NOT rs.EOF

        Response.Write rs("Name")

        rs.MoveNext
    wend

    closeRs(rs)
    closeDb(conn)
%>
  

(старое сообщение post, поскольку я не видел sql тега

В классическом ASP всегда заканчивается использованием

Request.QueryString("myInput") или Request.Forms("myInput") или все же 2-в-1 Request("myInput") и работать оттуда

«Соединения» создаются с помощью ссылок и форм Post / Get

В Интернете есть множество примеров, но вот один

Для сохранения переменных на разных страницах у вас есть (как и сегодня) 3 способа

  • Session переменная, она удаляется за сеанс пользователя
  • Application переменная, она остается на каждом веб-сайте и является общей для всех пользователей
  • Cookies

например, «Авторизованный доступ к странице» создается путем установки a Session при правильном входе в систему, пересылки с помощью Response.Redirect("myProtectedPage.asp") и на этой странице обычно выглядит следующим образом:

 <%
    If Session("user-login") = True Then
        Response.Redirect("NotAuthorized.asp")
    End if
%>
<!--#include file="header.inc"-->
...
  

подробнее здесь

Комментарии:

1. Необязательно, в ASP есть объект сеанса … w3schools.com/asp/asp_sessions.asp

2. Session цель состоит в том, чтобы сохранять переменные во время сеанса пользователя, и у вас все еще есть Application переменная, которая находится на веб-сайте… ооо, подождите, это было то, о чем он спрашивал?

3. Я думаю, у вас может быть не только неправильный конец палки, но и неправильная палка 🙂

4. только сейчас я увидел sql тег, эхехехе — виноват!