Я хочу просто извлечь одну запись из базы данных на классической странице ASP.Приведенный ниже код в основном работает, но есть пара проблем, которые мне нужно решить:
1) Я хочу посмотреть, была ли возвращена запись или нет.result
не является ничем, поэтому перенаправление внизу никогда не выполняется.contact.RecordCount
всегда возвращает -1, поэтому я, очевидно, тоже не могу это использовать.Как ни странно, попытка получить доступ к RecordCount вне функции выдает ошибку «Объект не поддерживает это свойство или метод:« RecordCount »».
2) Я читал об отключенных запросах и видел примеры, где соединениеи команда закрывается и / или устанавливается в Ничто в конце функции.Есть ли определенная передовая практика в отношении того, что мне следует делать?
3) Будет ли использование параметризованного запроса полностью защищать меня от внедрения SQL или мне нужно вручную удалять опасные слова и символы?
function GetContactByUsername(username)
Dim conn, command, param, contact
set conn = server.CreateObject("adodb.connection")
conn.Open Application("DatabaseConnectionString")
Set command = Server.CreateObject("ADODB.COMMAND")
set command.ActiveConnection = conn
command.CommandType = adCmdText
command.CommandText = "Select * from MY_DATABASE.dbo.Contact where Username = ?"
Set param = command.CreateParameter ("Username", adVarWChar, adParamInput, 50)
param.value = username
command.Parameters.Append param
Set contact = Server.CreateObject("ADODB.RECORDSET")
contact.Open command
Response.Write contact.RecordCount '' always -1
set GetContactByPurlCode = contact
end function
dim result
result = GetContactByUsername(Request.QueryString("username"))
if result is Nothing then '' never true
Response.Redirect "/notfound.asp"
end if
FirstName = Trim(result("FirstName"))
LastName = Trim(result("LastName "))