#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
тег, эхехехе — виноват!