다른 서버의 DB연결 정보를 모르는 상태에서도 DB를 쿼리해 올수 있는 방법입니다.
물론 해당 DB가 접근 가능한 서버에 DB쿼리를 담당하는 소스가 있어야 하구요.
원리는 아래와 같습니다.
DB를 접근할 수 없는 서버측 (서버A) 에서 xmlhttp로 DB가 접근가능한 서버(서버B) 에 있는 Dbconn.asp를 쿼리문을 주면서 호출하면 Dbconn.asp는 해당 DB에 있는 데이터를 쿼리한다음 XML로 변환하여 Response로 부립니다.
서버 A에서 xmlHttp로 연결하였기때문에 response에서 생성된 데이터를 String형태로 가져 올수 있습니다.
가져운 String를 ADODB.Stream객체로 변환후 다시 Recordset로 변환...^^
DTest.asp -해당 DB가 접근하지 않는 서버에서 실행
<%
"" Response.Charset="euc-kr"Dim QryStr
"" QryStr = " select idx, Iname, Iorder"
"" QryStr = QryStr & " from Tcategory "
"''" QryStr = QryStr & " where mco = '000' "
"" QryStr = QryStr & " order by art_order "
Dim Http, sXML
"" Set Http = server.CreateObject("Microsoft.XMLHTTP")
""" Http.Open "GET", "http://localhost/Dbconn.asp?QryStr"=" & QryStr, False
Http.SendsXML = Replace(Http.responseText, vbNewLine, vbNullString)
Set Http = Nothing
Dim oStream
"" Set oStream = Server.CreateObject("ADODB.Stream")
oStream.Open
' oStream.WriteText sXML 'Give the XML string to the ADO Stream' oStream.Position = 0 'Set the stream position to the start
Dim oRecordset
"" Set oRecordset = Server.CreateObject("ADODB.RecordSet")
' oRecordset.Open oStream 'Open a recordset from the streamoStream.Close
Set oStream = Nothingresponse.Write oRecordSet.recordcount
Set oRecordset = Nothing
%>
Dbconn.asp - 해당 DB 가 접근 가능한 서버측에 심어두어야 함.
<%
Option Explicit""Response.ContentType = "text/xml"
Dim ObjADORS, QryStr,DB_DSN
Const adPersistXML = 1
""QryStr = Request("QryStr")
""DB_DSN = "Provider=sqloleDB;Data Source=MyDBSvrIP;Initial Catalog=MyDBName;User ID=myUser;Password=myPwd;"""Set ObjADORS = Server.CreateObject("ADODB.Recordset")
ObjADORS.Open QryStr, DB_DSN
ObjADORS.Save Response, adPersistXML
ObjADORS.Close
Set ObjADORS = Nothing%>
'Website 세상 > Web Program' 카테고리의 다른 글
윈도우 스케줄러를 사용해서 자동백업을 구축하기 (0) | 2008.11.05 |
---|---|
asp에서 XML 다루는 여러가지 예제 (0) | 2008.10.22 |
xmlHTTP를 이용해서 웹페이지 긁어오기 ASP/VB (0) | 2008.10.22 |
게시판서 각종 메세지 영문표시 (0) | 2008.10.22 |
웹페이지에서 클립보드 다루기 (0) | 2008.10.22 |