개발/ASP

[ASP] MSSQL사용하기

devriver 2018. 1. 23. 18:39
반응형

ASP에서 MSSQL 서버의 데이터를 처리하는 법!

태오 http://taeyo.net/Columns/View.aspx?SEQ=224&PSEQ=15&IDX=7 사이트를 정리해봤습니다!


이론


ODBC (Open Database Connectivity)

예전의 데이터베이스들은 폐쇄적이었기 때문에, 데이터베이스 자체에서 제공하는 클라이언트가 없으면 데이터베이스 서버로 접근할 수 없었다. ODBC는 DSN을 이용해 데이터베이스로의 접근을 가능하게 만드는, 일종의 웹과 특정 데이터베이스의 연결통로 역할을 한다.


UDA (Universal Data Access)

ADO와 OLEDB를 사용하여 광범위한 데이터들에 접근하고 처리할 수 있는 기술을 UDA (Universal Data Access) 라고 한다.

ODBC는 이기종의 관계형 데이터베이스만 접근할 수 있는 반면에, OLEDB는 비관계형 데이터(메일폴더, 텍스트, 디렉토리, 웹사이트 등)에도 접근할 수 있다.


ADO - 데이터를 다루는 개체

ODBC, OLEDB - 데이터의 제공자(연결통로)


예시

ODBC


Dim adoCn

Set adoCn = Server.CreateObject("ADODB.Connection")


adoCn.open "DSN=MySQLDB;uid=xx;pwd=xx"


//미리 셋팅한 ODBC의 DSN의 값을 사용한다.


OLEDB


Dim adoCn, str

Set adoCn = Server.CreateObject("ADODB.Connection")


str = "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;User ID=xx;password=xx;"

adoCn.open str


OLEDB 설명)

Provider : SQL서버 사용시, SQLOLEDB

Data Source : 데이터베이스 서버가 설치된 서버의 이름 또는 IP

Initial Catalog : 데이터베이스 서버 안에 존재하는 데이터베이스 이름

User ID, password : 계정정보

Persist Security Info : 기본설정은 false, true또는 yes로 설정하면 연결이 열린 다음에 사용자 ID 및 암호 같은 보안 관련 정보를 얻을 수 있다.



데이터베이스 연결


SET oConn = Server.CreateObject("ADODB.Connection")

oConn.open "Provider=SQLOLEDB.1;Password=?;Persist Security Info=True;User ID=?;Initial Catalog=?;Data Source=?"

oConn.CursorLocation = 3

oConn.CommandTimeout = 120




데이터베이스 연결 해제

IF IsObject(oConn) Then

 IF oConn.state = 1 THEN

oConn.close

 END IF

 Set oConn = Nothing

END IF



db실행 1


Set objCmd = Server.CreateObject("ADODB.Command")

Set oRs = Server.CreateObject("ADODB.RecordSet")


With objCmd

 .ActiveConnection = oConn

 .CommandText = "dbo.프로시저명"

 .CommandType = adCmdStoredProc

 .Parameters.Append .CreateParameter("@userid",adVarChar,adParamInput, 40, "hjkvnm")

 .Parameters.Append .CreateParameter("@pw",adInteger,adParamInput, 4, 11)

End With

Set oRs = objCmd.Execute


If Not oRs.Eof Or Not oRs.Bof Then

 ResultCd = oRs("RESULTCODE")

End If

oRs.Close


set ors = Nothing

set objcmd = nothing


*

with


end


여러 문장에 걸쳐 동일한 객체의 문장이 있을때,



db 실행 2-실행(insert, update, delete)


oConn.excute(sql)


db 실행 3-조회(select) 

Set oRs = Server.CreateObject("ADODB.RecordSet")

oRs.Open sql, oConn, 3

if not(ors.eof or ors.bof) then

 arrrows = ors.getrows()

end if



*

getrows() 메소드

RecordSet 객체의 레코드들을 이차원 배열로 복사한다.


Dim arrows = objRecordSet.GetRows([rows],[start],[fields])


[rows] 가져올 레코드 수

[start] 몇번째 레코드부터 가져올 건지.

[fields] 필드이름, 필드이름이 담긴 배열, 숫자가 가능함.