database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 46 게시물 읽기
No. 46
Re: spl을 웹과연동을 시켜서 실행 할려구하는데염 ㅡ.ㅡ 안되는게 있내염.
작성자
이원재
작성일
2001-08-27 11:53
조회수
16,171

-- 이필호 님이 쓰신 글:

>> DB를 짜놓고 거기에있는 내용을 볼려고 ULR에 지정해서 (http://서버이름/가상디렉토리?=select * from 테이블 for xml auto&root=root) 했는데 안뜨더라구염.

>> (빈공간에 + 도 넣어 봤음)

>> sql iis가상디렉토리에서. 모든것을 다 지정했는데도. 안되내염 다른 이유가 있는지 가르쳐주세여.

>> 아니면. 처음부터 어떻게 연동을 시켜야되는지 갈쳐 주셈..차근차근...부탁입니다.

 

너무 방대한 내용이라서.....일단 간략한 강좌를 복사해서 붙였습니다.

법에 걸릴려나 (출처 한빛미디어/작성자 한동훈)..

 

일단 이 강좌는 asp로 구현 한 부분이구...어쨋던 커넥트를 하기 위한

간단한 연결방법은 컴의 아무 곳에서나 텍스트 파일(빈파일)을 만들고

파일 확장자를 *.UDL로 바꿉니다. 그럼 아이콘 모양이 바뀌죠...

그러고 더블 클릭하면 여러가지 DB(Oracle,MS-SQL..)로 커넥트 할수 있는

리스트가 있구 OLE/ODBC 커넥션 방법도 나눠져 있습니다.

그리고 서버이름이나 아이피 입력하구 로그인 정보 입력하고 Category선택 할수 있습니다. 그릭고 테스트 해보면 성공여부가 나오죠

그리고 확인을 누른후 나와서 이파일을 텍스트 편집기로 확인 하면 커넥션 정보 타이틀이 있고 셋째줄에 보면 커넥션에 필요한 정보가 있습니다.

ODBC나 OLE형식의 타입과 서버, 카테고리, 계정 정보가 있는 줄이죠

ADO연결 Object를 생성하구 VC,VB,ASP,VFox, 등등 원하는 언어에서

붙여 넣고 사용 하셔도 되구, 셋팅을 편하게 하실려면 보안을 좀 고려 하셔서

만드시 UDL파일을 FSO로 읽어 들인후 첫번째,두번째 라인은 스킵시키고

세번째라인을 불러 들여서 DB연결 정보로 사용하시면, 서버이젼이나 변경

시 외부 UDL파일을 변경함으로써 간단히 셋팅 하실수 있습니다.

단 읽어 들일때, UDL파일은 유니코드 타입의 텍스트이므로 유니코드 타입으로 읽어 들여야 됩니다....

 

아래는 펀글.................

 

 

 

----------------------------------------------------------------

데이터베이스에 연결하는 기술은 크게 ODBC와 OLE-DB가 있다. 데이터베이스 마다 고유의 API가 있기 때문에, 데이터베이스를 변경한다는 것은 데이터베이스와 관련된 거의 모든 코드를 변경한다는 것을 의미한다. 이에 대해서 하나의 추상층을 제공함으로써 단일화된 코드로 각각의 데이터베이스에 연결해서 사용할 수 있는 기술을 MS에서 내놓아 산업 전반에 걸쳐서 표준화된 기술이 ODBC와 OLE-DB다. ODBC는 현재 MS에 의해서 버전업 되지 않고 있지만, 서드 파티 업체들에 의해서 현재도 꾸준히 버전업되고 있으며, NT에서 돌아가는 웹 서버에서 Unix에 있는 데이터베이스에 연결하기 위한 기술로서 아직도 유용하다. OLE-DB는 ODBC 다음으로 나온 데이터베이스 연결 기술로 데이터베이스 뿐만 아니라 비데이터베이스- 예를 들면, 사용자의 email이나 워드 문서, 엑셀 문서 등 - 에도 연결할 수 있다. 각각의 데이터베이스 벤더들은 ODBC 드라이버와 OLE-DB 드라이버를 제공하고 있다.

 

MS에서 제공하는 드라이버는 Microsoft Data Access Component(MDAC)이며, 현재 2.6까지 나와 있습니다. 이 드라이버는 http://www.microsoft.com/data에서 받을 수 있다. 상용으로 제공되는 드라이버중에는 InterSolv의 ODBC 드라이버와 Merant의 Data Direct를 가장 많이 사용하고 있다. 이 드라이버는 MS의 드라이버 보다 더 많은 데이터베이스(IBM DB2, Informix, MySQL, Progress, SQLBase, XML)를 지원하고 있다. 평가판 드라이버와 레퍼런스는 http://support.merant.com에서 얻을 수 있다.

 

이 강좌에서는 SQL Server를 이용하지만, SQL Server가 아니며 NT 또는 Unix 기반의 데이터베이스 서버와 연결해서 ASP를 이용하고자 한다면 위 드라이버를 고려해봐야한다. 또한 MS사의 Oracle 드라이버와 InterSolv의 Oracle 드라이버는 구현에 있어서 나름대로의 장단점이 있으며, Oracle 이라면 서드 파티의 드라이버를 추천하고 싶다.(MS의 MDAC에 있는 Oracle 드라이버와 ASP의 궁합은 썩 좋지 않다, 가장 최근의 MDAC 2.6에서는 이전 버전보다 Oracle을 보다 잘 지원한다)

 

먼저 Query Analyzer에서 다음과 같은 질의를 실행하도록 합니다. MSDE를 사용중이라면 MSDE가 설치된 곳의 binn 폴더에서 다음과 같이 실행하도록 합니다.

 

osql -Usa -P

 

대소문자를 구분하므로 -U와 -P는 대문자로 입력한다. 설치시에 sa 계정에 비밀번호를 설정하지 않았다면 위와 같이 ?P다음에 아무 것도 입력하지 않도록 하며, 비밀번호를 설정했다면 비밀번호를 입력하도록 한다.

 

계정의 비밀번호는 개인PC에서 개발하는 것이라면 설정하지 않아도 되나, 웹 상에 올려지는 프로덕션 서버라면 반드시 암호를 설정하기 바란다.

 

만약 자신의 PC가 아닌 네트워크 내의 다른 PC가 데이터베이스 서버라면 osql을 이용해서 다음과 같이 연결할 수 있다.

 

osql -HTargetPCName -Usa -P

 

TargetPCName에 상대방 PC 이름을 입력한다.

 

CREATE DATABASE Board

GO

USE Board

GO

CREATE TABLE Sample(

Name varchar(30) NOT NULL,

Age int NOT NULL)

GO

 

데이터베이스와 테이블을 생성한 다음에 테이블이 제대로 생성되었는지 확인하려면 다음가 같이 한다.

 

sp_help Sample

GO

 

예제로 사용할 데이터를 다음과 같이 입력한다.

 

INSERT INTO Sample (Name, Age) VALUES ('taeho', 32)

INSERT INTO Sample (Name, Age) VALUES ('Merlin', 24)

INSERT INTO Sample (Name, Age) VALUES ('Syres', 23)

 

만약 여러분이 SQL문을 사용하는데 익숙하지 않다면 Enterprise Manager를 사용하는 것 보다는 QueryAnalyzer나 osql등을 이용해서 직접 SQL문을 작성하는 습관을 들이는 것이 좋다.

 

만약 여러분이 SQL에 익숙하지 않다면 한빛미디어(http://www.hanbitbook.co.kr)의 AboutSQL 강좌를 참고하시기 바랍니다. 입력이 끝났으면 ASP에서 데이터베이스와 연결하도록 하자.

 

Dim sConn

Dim dc

sConn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial

Catalog=Board;Data Source=."

 

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

dc.Open sConn

 

연결 문자열을 입력하고, 데이터베이스와의 연결을 설정한다. Provider는 여기서 사용할 OLE-DB 드라이버를 뜻합니다. User ID는 데이터베이스에 로긴할 계정을 뜻하며, Initial Catalog는 데이터베이스 이름을 뜻한다. Data Source는 데이터베이스 서버의 PC이름이나 IP를 입력한다. 만약 웹 서버와 데이터베이스 서버가 동일한 PC에 있다면 위와 같이 .으로 설정할 수 있다. .은 (local)을 뜻합니다.

 

PC 이름을 직접 설정하는 것보다 .을 이용할 경우 다른 곳으로 서버를 옮겨도 소스 코드를 수정할 필요가 없어지는 장점이 있다.

 

Dim SQL

Dim rs

 

SQL = "SELECT * FROM Sample"

Set rs = Server.CreateObject("ADODB.Recordset")

Rs.CursorLocation = 3

Rs.CursorType = 3

Rs.Open SQL, dc

%>

 

여기서는 레코드 셋을 설정하고, 레코드 셋을 만들기 위한 질의를 설정한다. 레코드셋을 열기 전에 CursorLocation과 CursorType을 설정한다. 여기서는 클라이언트측 정적 커서를 설정했다.(대부분의 경우에 이러한 설정이 만족할 만한 수행 성능을 가져다 준다)

 

커서에는 많은 ASP 개발자들이 잘 못 알고 있는 함정이 있다. 클라이언트측 커서를 사용하고 커서 유형으로 키셋(Keyset) 커서를 쓰는 것이 가장 빠르고 효율적이라는 것이다.

 

ADO에서는 모든 종류의 커서 유형을 사용할 수 있는 것은 서버측 커서일 때 뿐이며, 클라이언트측 커서로 설정하면 커서 유형은 자동으로 정적 커서가 된다. 즉, 클라이언트측 커서로 설정하면 정적 커서 이외의 커서는 사용할 수 없다. 만약 개발자가 클라이언트측 커서로 설정하고, 커서 유형으로 키셋 커서나 동적(Dynamic) 커서 등을 설정하면 ADO는 에러를 내지 않고 자동으로 커서 유형을 정적 커서로 변경한다.

 

Rs.CursorType = 3

 

은 정적 커서를 뜻한다. 만약 테스트 해보고 싶다면 위 값을 다른 값으로 바꾸어보고 다음과 같은 문장을 실행해서 값을 확인하기 바란다.

 

Response.Write rs.CursorType

 

값은 언제나 3을 돌려줄 것이다.

 

고마운(?) ADO가 클라이언트측 커서일 때, 커서 유형이 다르면 에러를 내지 않고 자동으로 정적 커서로 바꿔버리기 때문에 많은 ASP 개발자들이 잘못 알고 있는 부분이다.

 

이제 레코드셋을 열었으니 데이터를 화면에 출력해보도록 한다.

 

<table>

<tr>

<td>Name</td>

<td>Age</td></tr>

 

<%Do Until rs.EOF%>

<tr>

<td><%=rs("Name")%></td>

<td><%=rs("Age")%></td></tr>

<%

rs.MoveNext

Loop%>

</table>

 

레코드셋의 마지막까지 이름과 나이를 출력하도록 한다. 레코드셋의 필드에 있는 값에 접근하려면 rs("FieldName")과 같이 이용한다.

 

<%=%>는 <%Response.Write %>의 축약형이다.

 

루프를 돌면서 레코드셋을 출력할 때 주의할 점은 반드시 rs.MoveNext와 같이 레코드 셋을 이동시켜서 루프가 끝나도록 하는 것이다. 그렇지 않으면 루프를 무한히 반복하게 된다. (그것도 아주 빠른 속도로)

 

모든 객체를 다 이용했으면 객체의 연결을 닫고, 객체를 메모리상에서 파괴한다.

 

<%

rs.Close

Set rs = Nothing

 

dc.Close

Set dc = Nothing

%>

 

ASP에서는 나름대로의 접두어 규칙이 있는데, 이 접두어 규칙이 VB과 같다. 필자는 VB의 접두어 규칙이 ASP에는 맞지 않는 것들이 몇가지 있다고 생각한다. 그래서 다음과 같은 몇가지 접두어를 더 이용한다.

 

그 중에 한가지는 연결 객체를 뜻할 때 보통 objConn이라고 많이 쓰지만, 웹 환경의 ASP에서는 하나 이상의 연결 객체를 이용하는 일이 거의 없기 때문에 Data Connection을 뜻하는 dc를 접두어로 이용하고 있으며, 레코드셋을 뜻하는 objRs 대신에 rs로 이용한다. 또한 폼에서 입력되는 데이터의 이름은 txt라는 접두어를 붙이며, 폼에서 입력 받은 데이터를 저장하는 변수는 접두어 f를 붙인다. f는 From Form을 뜻한다. 그외의 접두어 명명 규칙은 VB이나 ASP의 관례를 따른다. 이와 같은 코딩 스타일은 여러분의 취향이며, 여러분이 편한대로 이용하기 바란다.

[Top]
No.
제목
작성자
작성일
조회
49mysql의 limit와 같은 기능은 어떻게..
임창근
2001-09-01
11915
55┕>Re: mysql의 limit와 같은 기능은 어떻게..
권기진
2001-09-09 02:55:44
13011
48MS-SQL 2000 깔고후...
무평이
2001-08-29
11796
50┕>Re: MS-SQL 2000 깔고후... [1]
박해수
2001-09-03 16:36:38
12841
47[Q] 2K에서 오류 14274... [3]
조대현
2001-08-29
13220
45spl을 웹과연동을 시켜서 실행 할려구하는데염 ㅡ.ㅡ 안되는게 있내염.
이필호
2001-08-23
11500
46┕>Re: spl을 웹과연동을 시켜서 실행 할려구하는데염 ㅡ.ㅡ 안되는게 있내염.
이원재
2001-08-27 11:53:16
16171
44[질문]sql을 첨부터 깔았는데요...
무평이
2001-08-21
11715
42스토어 프로시져에서 에러 추출하기
이원재
2001-08-18
13655
41access200에서 문자열구문오류..? [1]
xxx
2001-08-17
14056
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다