안규 공부방

ACTIVE SERVER PAGE > Command - Method

등록일 : 2017-07-04 17:07 조회수 : 93,398

여러분 중 저와 같이 테이블의 필드를 추가 하고 또, 삭제하고 싶을 때가 있을 것이다... 분명,,,

쿼리문이 존재하는데,,,, 왜 create,insert,update와 같은 작업들은 수행이 되는데,,, 필드를 삭제하고

추가할수 있는 alter table 이란 쿼리문은 수행이 되지 않는가?????

전 이 문제를 해결하기 위해 많은 시행착오를 거쳤답니다...... 어줍잖은 생각으로 이것 저것 안해 본 것

이 없을 정도였으니까요,,,

사람은 역시 책을 보면서 공부를 해야 한다는걸 전 또다시 느끼게 되었답니다. 저와같은 이런 시행착오

를 거치지 않기를 바라는 작은 마음으로 이 글을 적습니다.

먼저 필드를 추가하고 삭제하기 위해서는 "alter table"이란 쿼리문을 알아야 한답니다.

아마 이글을 관심있게 있는 분이라면 아마 알고 계실 줄로 믿습니다.

alter table MEMBER add name varchar(30) null

이런 식으로 쿼리문을 사용해서 필드를 추가 할 수 있답니다. member 테이블에 name이란 필드를

varchar(30) 으로 필드를 추가 하게 되지요....

또 삭제를 하기 위해서는 ??

alter table MEMBER drop column name

이렇게 drop column 구문을 사용해서 필드를 삭제할 수 있답니다.

우리는(저는) 아마 recordset 오브젝트를 사용해서 이런 작업을 하기 위해 무지 무지 노력했을거란

생각이 드는군요.. 적어도 책을 보고 공부하지 않은 분이라면요,,, 저 같이... ^^;;

아쉽게도 우리는 필드를 추가 삭제하기 위해서는 알아야 할 것이 몇가지 있답니다.

먼저 데이터 정의 언어란 무엇인가?

그리구, 여기에서 필요한 command 오브젝트에 대해서 배우고 넘어가야 한다는 겁니다.

그럼, 제가 간단히 이 두가지의 생각을 적어 보도록 하지요..

먼저 데이터 정의언어란,,,, ??

데이터베이스의 구조를 변경하는 sql 구문을 포함하는 것입니다....

예를 들어 alter table 또는 drop index등의 구문들이 데이터정의 언어가 되는 것입니다.

그리구, command 오브젝트란 무엇인가??

간단히 말해서 command 오브젝트는 실행되는 명령을 말합니다. 이러한 명령들은 sql의 select,

update,delete 등의 구문일수도 있고, 우리가 흔히 듣는 저장 프로시저의 이름일수도 있다는거지요.

그리구, 데이터 정의 언어를 포함하는 객체란 뜻입니다. .... 어쭈,,,,, 좀 어려운 말도 하지요?? 하하하

  그럼 command 객체와 데이터정의언어 그리구, alter table 같은 쿼리문,,,, 이 세가지의 연관성을

이해 하시겠어요???? 저두 한다면 이렇게 어려운 것두 할 수 있답니다... ^^;

다시말해 앞으로 언급하게 될 저장프로시저나 데이터 정의 언어를 사용하기 위해서는???

딩동뎅,,,,, 벌써 알고 계시죠???? 역시 두뇌회전이 빠르다니깐....

command 오브젝을 알아야 한다는 겁니다....

그럼, 소스를 보도록 하지요... 그러면서 알아가야 하니까요....
 
dim adCmdText
	adCmdText=1
        
	Set Conn = Server.CreateObject("ADODB.Connection")
	Conn.Open("DSN=polcomm;uid=sa;pwd=;database=ankyu")
	Set Cmd=Server.CreateObject("ADODB.Command")
	set Cmd.ActiveConnection=Conn
	Cmd.CommandText="alter table member add name varchar(5) null "
	Cmd.CommandType=adCmdText
	Cmd.execute


       
위의 소스는 member 테이블에 name이란 필드를 추가하는 소스입니다.

먼저 adCmdText 변수를 선언하구 값을 1이라구 주었다.

이 값은 MSDN 라이브러리를 찾아보시길 바랍니다. ado에서 용되는 값과 기호에 대해서는 알고 계시란 생각이

들군요..... recordset 객체를 사용하는 커서타입이라는거 아시죠???

먼저 connection 오브젝트를 만들고 데이터베이스을 열었습니다... 많이들 보셨으니,,,,

Set Cmd=Server.CreateObject("ADODB.Command")
set Cmd.ActiveConnection=Conn

중요한 것은 위의 문장입니다. 우리는 여기에서 command 객체를 사용했어요..

command 객체를 만들고 속성값을 지정했답니다.

여기에서 ActiveConnection 속성은 사용하고자 하는 connection 객체를 저정해 주면 됩니다.

그리구, CommandText 속성은 실행하고 싶은 SQL구분을 사용하면 된답니다. ... 쿼리문에 대해서는

제가 앞에서 말씀 드렸죠?

commandType 에 대해서는 1를 주었답니다...

이 밖에도 CommandTimeout=30  과 같은 속성이 있답니다.

혹시 모를 오류 메시지를 출력하기까지 대기할 시작을 지정할수 있는 속성이구요,

prepared=false 같은 속성도 있는데,,, 이 속성은 데이터베이스 제공자가 명령의 실행 전에 이를 컴파일할

것인지 결정할수 있는 부울값을 가지게 되는 것입니다.

이 값을 ture로 지정해 두면 이어지는 명령의 수행이 확실히 빨라지게 된답니다.

그러나 이 속성의 디폴트 값은 false라는 것을 알아두셔야 합니다.

한번 테스트 해 보세요.... 필드를 삭제하고 싶을 때???? 이것은 제가 일일이 설명을 드리지 않아도

벌써 알고 계시죠??

그럼 오늘도 좋은 하루 되세요......

다음에는 저장 프로시저에 관한 내용을 조금 실어 볼까 생각중이랍니다......
 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.