박영길씨 김현기에요.
수고가 많습니다. 우리가 해야할 일을 영길씨가 해주고 있군요.
감사합니다. 다음에 쐬주한잔 살께요.
감사합니다.
>>박영길 님께서 쓰시길<<
:: 안녕하세요.
::
:: ADODB.RecordSet이 아닌 ADODB.Command를 사용하여
:: TEXT형 컬럼을 포함한 테이블에 파라메터를 바인딩하여
:: INSERT하는 방법입니다. 테이블의 SELECT가 일어나지
:: 않기 때문에 ADODB.RecordSet을 사용하는 것보다 빠를
:: 것이라고 예상됩니다...^^;
::
:: 참고로 여러번의 실행이 될 경우 PREPARE가 가능합니다.
:: ADODB.Command의 Property중에 PREPARE에 관한 Property가
:: 존재합니다. 같은 문장을 여러번 실행할 경우 속도의 향상을
:: 꾀할 수 있을 것입니다.
::
:: 물론 UPDATE,DELETE에도 응용할 수 있겠죠.
:: 변수를 바인딩하여 사용하기 때문에 전체 SQL문의 길이에
:: 영향을 미치지 않기 때문에 내용이 많아도 오류가 발생하지
:: 않습니다. 단지 ASP의 변수의 할당량(TEXTAREA에 입력할 경우
:: 100KB 던가요)에 영향을 받습니다.
::
:: 그럼 많이 사용하세요...
::
:: <%
:: const adCmdText = 1
:: const adCmdTable = 2
:: const adCmdStoredProc = 4
:: const adCmdUnknown = 8
:: const adCmdFile = 256 ' &H100
:: const adCmdTableDirect = 512 ' &H200
::
:: const adParamUnknown = 0
:: const adParamInput = 1
:: const adParamOutput = 2
:: const adParamInputOutput = 3
:: const adParamReturnValue = 4
::
:: const adLongVarchar = 201 ' &HC9
::
:: const adExecuteNoRecords = 128 ' &H80
::
:: Dim AComm, sContent
::
:: Set AComm = Server.CreateObject("ADODB.Command")
::
:: ' 기존의 Connection 객체가 있을 경우 대입하고 없을 경우 접속 문자열을 입력
:: AComm.ActiveConnection = "Test"
:: AComm.CommandType = adCmdText
:: AComm.CommandText = "insert into test values (0, 'test', ?);"
:: AComm.Parameters.Append AComm.CreateParameter("content", adLongVarchar, adParamInput, Len(Reques
:: t("content")), Request("content"))
:: AComm.Execute
::
:: ' 실행시 반환되는 Recordset이 없을 경우
:: 'AComm.Execute , , adExecuteNoRecords
::
:: ' ADODB.Connection을 사용시에도 adCmdText(1)와 adExecuteNoRecords를 명시적으로
:: ' 제시하는 것이 속도가 빠르다.
:: ' ex) AC.Execute SQL, ret, adCmdText + adExecuteNoRecords
::
:: Set AComm = Nothing
:: %>
|