OK, SQL 함수를 호출하고 출력을 반환하는 Classic ASP 함수를 작성하려고합니다. 매개 변수화 된 ADODB 연결을 사용하려고하지만이 기능이 어떻게 작동하는지 잘 모릅니다. 올바른 방법을 배우려고합니다.Classic ASP 함수를 통해 사용자 정의 함수 실행
SQL 함수는 하나가 "소금"이고 다른 하나는 실제 텍스트 인 두 개의 문자열 입력을 가져 와서 16 진수로 변환합니다. SQL에서는 제대로 작동하지만 고전적인 ASP에서는 작동하지 않습니다.
나는 점점 계속, 의 ADODB.Command '800a0cc1'오류
항목은 해당 요청한 이름 또는 서수 컬렉션에서 항목을 찾을 수 없습니다.
Sub Encrypt(plainString)
strSQL = "SET NOCOUNT ON;SELECT dbo.Encrypt('xx', '?') as keycode"
Set cnnEncrypt = Server.CreateObject("ADODB.Connection")
cnnEncrypt.open CONNSTRING
Dim cmd1
Set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = cnnEncrypt
cmd1.CommandText = strSQL
cmd1.CommandType = adCmdText
cmd1.Parameters(0) = plainString (**Original Error Occured Here!!!!**)
Set rsEncrypt = cmd1.Execute()
If not rsEncrypt.EOF Then
Encrypt = rsEncrypt.Fields("keycode").Value
Else
Encrypt = "blank"
End If
' Clean Up
rsEncrypt.Close
Set rsEncrypt = Nothing
cnnEncrypt.Close
Set cnnEncrypt = Nothing
End Sub
"Cheran Shunmugavel"답변을 검토 한 후 새로운 작업 버전. (("테스트") 암호화) %이
<% Response.Write를 해독 같은 사이트에 전화 걸기>
가 진하기 때문에 당신은 페이지로 암호화 된 코드를 인쇄 할 수 없습니다. Binary to String 함수가 필요합니다. 함수에서 값을 반환하기 때문에 Sub에서 Function으로 변환했습니다.
Function Encrypt(byVal plainString)
strSQL = "SET NOCOUNT ON;SELECT dbo.Encrypt('xx', ?) as keycode"
Set cnnEncrypt = Server.CreateObject("ADODB.Connection")
cnnEncrypt.open CONNSTRING
Dim cmd1
Set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = cnnEncrypt
cmd1.CommandText = strSQL
cmd1.CommandType = adCmdText
cmd1.Parameters.Append cmd1.CreateParameter("", adVarChar, adParamInput, Len(plainString)+1, plainString)
Set rsEncrypt = cmd1.Execute()
If not rsEncrypt.EOF Then
Encrypt = rsEncrypt.Fields("keycode").Value
Else
Encrypt = "blank"
End If
' Clean Up
rsEncrypt.Close
Set rsEncrypt = Nothing
cnnEncrypt.Close
Set cnnEncrypt = Nothing
End Function
그리고 여기에 해독 기능이 있습니다.
Function Decrypt(byVal plainString)
strSQL = "SET NOCOUNT ON;SELECT dbo.Decrypt('xx', ?) as keycode"
Set cnnDecrypt = Server.CreateObject("ADODB.Connection")
cnnDecrypt.open CONNSTRING
Dim cmd1
Set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = cnnDecrypt
cmd1.CommandText = strSQL
cmd1.CommandType = adCmdText
cmd1.Parameters.Append cmd1.CreateParameter("", adVarBinary, adParamInput, LenB(plainString)+1, plainString)
Set rsDecrypt = cmd1.Execute()
If not rsDecrypt.EOF Then
Decrypt = rsDecrypt.Fields("keycode").Value
Else
Decrypt = "blank"
End If
' Clean Up
rsDecrypt.Close
Set rsDecrypt = Nothing
cnnDecrypt.Close
Set cnnDecrypt = Nothing
End Function
새 버전의 코드로 업데이트 된 질문을 받고 오류가 발생한 위치를 이전에 표시했습니다. 그 이후의 종류의 매개 변수 오류에 대해 설명해 주셔서 감사합니다. 이 페이지에는 adovbs.inc가 포함되어 있습니다. 변경 한 후에는 여전히 원하는 결과를 얻지 못하고 암호화 된 코드를 페이지에 인쇄하거나 변수에 저장하지 않습니다. 나는 단지 그것을 읽거나 잘못 부르고있다, 늦은 3am 일요일과 아마 나는 단지 그것을 완전히 놓치고있다. 월요일에 더 잘 볼 것입니다 :). – Maramor
그래, 위의 아무것도 문제가 아니라, 그 문제는 데이터가 함수에서 반환 된 바이너리 필드이며 단순히 화면에 쓸 수 없다고 생각합니다. 그래서 나는 어떤 종류의 이진 변환을 필요로한다고 생각한다. – Maramor
적어도이 부분과 관련된 모든 문제점을 해결했습니다 :). Cheran에게 도움을 주셔서 감사합니다. – Maramor