2009년 3월 23일 월요일

[TIP] 쿼리값이 NULL값인 변수를 변환시 오류 해결책

쿼리결과값이 담겨있는 객체를 while문을 이용하여 테이블로 반복출력시
쿼리값에 공백이나 null 값이 들어가있을시, Clng 함수나 Format 함수등으로 그 값을 변환시
에러 또는 오류가 출력되어 전체 페이지가 출력이 안되는 경우가 발생할 수 있다.

    <td align=center class="under">
    <%
     If price_12 = "" Or IsNull(price_12) Or Not IsNumeric(price_12) Then
      response.write("0")
     Else
    %><%=FormatNumber(price_12,0)%>  //이 부분은 PHP에서는 간단하고 보기좋게 표현이 가능..
    <%
     End If
    %>원</td>

PHP에서 하던 습관(대로 ASP에서는
response.write(FormatNumber(price_12,0)) 이렇게하면 될줄 알았는데
ASP에서는 상식이 안통했다..
결국 PHP에서 여러가지 쓰던 방식중 하나를 위에 적용시켜봤더니 된다. -_-
하아.. 정말 ASP 귀찮을뿐더러, 컴퍼넌트도 거의 유료라서 무료는 찾아보기도 힘들고..
컴퍼넌트를 설치해야 돌아가는 웹사이트를 만지자니.. 초반에 애를 먹었다랄까..
아뭏든 MS의 IIS, MSSQL 정말 싫다; 인터페이스 너무 불편하잖아 이건..

[COMPONENT] ABCUPLOAD 4.1

ABCUpload 4.1 입니다.

ABCUpload는 4.1버젼 이하는 사용제한이 없지만 그 위 버젼부터는
사용기간이 있어 시리얼을 입력해 주어야 합니다.

사려면 생각보다 가격이 높네여 ㅋㅋ

[설치법]

1. ABCUpload를 다운 받습니다.

2. 압축을 풀고 인스톨을 합니다.

3. c:\windows\system32 안에서 ABCUpload4.dll을 복사해서 현재 설정한 사이트 홈디렉토리에 넣습니다.

4. 시작 -> 실행에서 regsvr32 "홈디렉토리 전체경로\ABCUpload4.dll"

5. "DllRegister Server 성공" 가 뜨면 성공적으로  설치가 끝난것입니다.

6. Upload가 이루어지는 디렉토리는 쓰기권한을 주는게 당연하겠지요~

[출처] [본문스크랩] ABCUpload 설치법 및 다운로드|작성자 호수비밀

2009년 3월 21일 토요일

자주 쓰이는 ASP 선언문 종류

ASP에서의 IF문 사용법
IF 조건 THEN
    참일 때의 처리 실행.
ELSE
    거짓일 때의 처리 실행.
END IF


선언 및 생성
1. Dim - 변수를 선언. (예: Dim strName)
2. Set - 개체를 생성. (예: Set rs = Server.CreateObject("ADODB.RecordSet"))
논리 구문
3. IF ~ THEN - 만약 ~ 라면. (조건이 적은 경우)
4. SELECT CASE - 만약 ~ 라면. (조건이 많은 경우)
5. FOR ~ NEXT - 순환하면서 실행. (반복 횟수를 정확하게 알고 있을 때)
6. DO WHILE - 순환하면서 실행. (반복 횟수를 정확하게 알 수 없을 때)

IIS 5.x 설치 후 환경설정

IIS 설치 방법은 제어판 -> 프로그램 추가/제거를 열고
왼쪽 아이콘 중 Windows 구성 요소 추가/제거 탭을 누르고 누르면 나오는 창에서
인터넷 정보 서비스를 체크하고서 Windows XP 시디를 미리 넣어주고 확인을 누르면 설치가 된다.
설치하고나서 페이지를 테스트시 로그인창이 뜨는 경우가 있기에

사용자 삽입 이미지


제어판 -> 관리 도구 -> 로컬보안정책
을 열고
안 설정 > 로컬 정책 > 보안 옵션을 누르면 나오는 목록중
네트워크 액세스  : 로컬 계정에 대한 공유 및 보안에 게스트 전용으로 설정되어있는 값을
일반 - 로컬 사용자를 그대로 인증으로 설정해준다.

사용자 삽입 이미지


그리고 보안 설정 > 로컬 정책 > 사용자 권한 할당에서
네트워크에서 이 컴퓨터 액세스 부분을 누르면 나오는 창에서 IUSR_사용자명이 추가 되있는지 확인한다.

이렇게까지 설정해줬는데도 로그인창이 뜨는 경우가 있는데, 필자는 제어판의 방화벽 창을
열고 사용 -> 사용안함 으로 바꿔주니 외부에서 로그인창이 뜨지 않았다..
방화벽 사용으로 설정한 상태에서 고급탭의 설정을 눌러 HTTP 포트에 접근 권한을 개방해놔도...
안되던것이... 사용안함으로 설정해놓으니 되는것이 참... IIS 참 짜증을 유발시킨다...
어쨌든 테스트 서버는 이렇게 설정해놓고 테스트해야겠다...

2009년 3월 18일 수요일

ASP에서 MSSQL 연동해서 쿼리 출력하는 예제

안녕하세요? 웹프로그램에 가장 흥미와 제미 있을시기가 지금 님의 시기인듯 한데요

상세한 정보를 원하신다면 제가 끝에 남긴곳에 강좌를 보시구요

저는 실전적으로 바로 적용할수 있고 초보개발자가 빨리 이해할수있는 수준으로 글을 작성하겠습니다.

따라서 학술적이나 이론적으로는 상이함이 있을수 있습니다만...

님이 원하시는 답변의 핵심에 최대한 접근해보도록 노력하겠습니다.

소스작성 순서는

디비접속객체로 디비접속 =>디비 내용 전달 객체생성=>변수활용 쿼리작성=>디비내용전달객체에 쿼리실행에 의한 테이블내용 담기=>리스팅 뿌리기

이상이 순서입니다.

주석을 확인하시면 미약하지만...^^; 설명이 있습니다.
소스
<%
constr="Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=디비명;User ID=유져아이디;Password=비밀번호;Network Library=dbmssocn"
Set db = Server.CreateObject("ADODB.Connection") 'db라는 컨넥션 object 를 생성합니다.
db.Open constr

'위내용은 constr 변수 내용으로 db라는 object로 데이터베이스에 접속한다는 뜻입니다.


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

'rs라는 레코드셋 object 생성합니다. rs안에 테이블내용이 들어갑니다.
Set rs.ActiveConnection = db 'rs는 접속할것이다 db라는 객체를 활용해서

'위내용은 테이블 내용을 전달할 rs object 선언과 rs는 db object 를 활용해서 디비에 접속한다는 뜻입니다.


strSql ="select * from  table " 'strSql 이라는 변수에 실행 쿼리를 작성
rs.Open strSql 'strSql 변수의 내용(쿼리)으로 rs에 테이블 내용을 담으라는 뜻입니다.

'위내용은 strSql 의 변수 활용으로 쿼리 작성해서 rs가 그것을 활용해서 테이블 내용을 가져오는 과정입니다.


while not(rs.EOF) '루프를 돌립니다. 테이블의 끝레코드가 아니면 계속 루프가 돌아가라는 조건으로

response.write rs("필드명") &"<br>" '뿌려야할 필드를 출력

rs.MoveNext '다음레코드로 이동

wend '루프의 끝

'위내용은 rs 가 갖고 있는 필드내용을 출력하는 예제입니다. 그리고 그다음 레코드가 이동이 되는 과정도 있구요
%>

이상이 디비에 있는 내용을 출력하는 소스 예제이구요...

물론 객체를 생성했으면 close 하고 nothing 해야한다 변수선언 똑바로 안하냐?
그런 내용의 테클적인 글도 올라올수 있겠으나...

님이 원하는 질문의 핵심에 최대한 접근이 이글 작성의 목표입니다.

상세한 학습을 원하신다면 teayo 사이트의 asp 강좌를 보시면 정말 잘나와있습니다.


제글이 도움이 되셨으면 합니다. 좋은하루요 ^^

MSSQL2005의 권한 설정 설명

MSSQL2005의 변화된 권한 설정 DB/SQL 노트
자료 출처 : http://blog.naver.com/c1dong8/10019140217

MSSQL2000에서는 권한설정을 하면 SQL을 기준으로 권한을 주었다. 예를 들면 검색권한을 주고싶으면 select 권한을 주는 식으로 필요한 권한을 체크해주는 식이였다.

그래서 MSSQL2005왔을때 많이 해맸다-_-;;;;

어찌됫건 MSSQL2005와서 권한 설정의 가장큰 변화는 로그인권한과 데이터베이스 사용권한을 따로 생성해야하는 것인거 같다.

MSSQL2000때는 로그인권한을 가진 유저를 각DB에 추가시키는 방식으로 권한을 주었지만 MSSQL2005부터는 로그인권한을 가진 유저를 만든후 DB에 유저를 추가시킨다음 만든 로그인과 연결된 권한을 생성하는 방식이다.(C#으로 보자면 인스턴스를 만들어서 접근하는 것과 비슷한거 같다.) 간단하게 말하자면 로그인하는 계정과 DB를 사용하는 계정을 따로 생성해야 한다는 것이다.


로그인 계정을 만드는 것은 MSSQL2000때와 같다. 보안>로그인 에서 새 로그인을 만들어주면된다.

이제 DB로 가서 보안>사용자 새 사용자를 추가한다. 사용자이름을 추가하고 아까만든 로그인(로그인 이름)을 설정해준다.

기본 스키마는 자신보다 높은 권한을 가진 스키마를 설정해야한다. 디폴트로 dbo로 되있는데 dbo의 정보를 보면 오너 권한이 있는걸 알수있다. 사용자를 만들면 자동으로 스키마도 생성해주므로 필요하다면 다른 스키마를 선택해도 된다.

밑에보면 데이터베이스 역할 멤버 자격 이라는 칸이 있는데 이것이 예전의 권한설정부분이다.

MSSQL2000과 많이 달라진 것중하나가 권한설정 부분이다. 어디서 본것 같다했는데.....오라클할때 배운거 같다-_-;;;

권한을 설명하자면


역할 멤버

설명

db_accessadmin

Windows 로그인, Windows 그룹 및 SQL Server 로그인에 대한 액세스를 추가하거나 제거할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms191451(SQL.90).aspx

설명으로 봐서는 로그인에 대한 계정을 추가 삭제할수 있는 권한이다.

db_backupoperator

데이터베이스를 백업할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms189041(SQL.90).aspx

말그대로 DB를 빽업할 수 있다.

db_datareader

데이터베이스에 있는 테이블이나 뷰에 대해 SELECT 문을 실행할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms188629(sql.90).aspx

보통 이 권한을 염두하고 프로그램을 만들었으니 변환한 DB의 사용자는 거의 이 권한으로 주었다.

db_datawriter

모든 사용자 테이블에서 데이터를 추가, 삭제 또는 변경할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms175039(SQL.90).aspx

MSSQL2000 에서는 안써본기능이라 잘 모르겠다;;

db_ddladmin

데이터베이스에서 모든 DDL(데이터 정의 언어) 명령을 실행할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms190667(SQL.90).aspx

데이터 정의어로 오라클에서는 테이블을 생성,삭제,변경할 수 있는 권한이었는데 여기서도 그런거 같다

db_denydatareader

데이터베이스 내에 있는 사용자 테이블의 데이터를 읽을 수 없습니다.

http://technet.microsoft.com/ko-kr/library/ms187916(SQL.90).aspx

어디에 쓰이는지 모르겠다;;

db_denydatawriter

데이터베이스 내의 사용자 테이블에 있는 데이터를 추가, 수정 또는 삭제할 수 없습니다.

http://technet.microsoft.com/ko-kr/library/ms188308(SQL.90).aspx

안써봐서 모른다;;

db_owner

데이터베이스에서 모든 구성 및 유지 관리 작업을 수행할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms180977(SQL.90).aspx

개발할 때 이 권한을 주면 편하다 ㅡ.-;;;

db_securityadmin

역할 멤버 자격을 수정하고 사용 권한을 관리할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms188685(SQL.90).aspx

Database Roles에서 사용자를 추가, 삭제, 객체사용권한등을 변경할 수 있다.

Public

사용자를 만들면 들어가있는 권한


어디에 쓰이는 권한인지는 모르겠다.


이렇게 역할 멤버 자격까지 주면 사용자가 추가된다.



저장프로시저를 이용하기위해서는 전처럼 하나하나에 권한을 추가해주어야한다.

프로그래밍 기능<저장 프로시저 에서 해당 저장프로시저에서 오른쪽 클릭을 하여  속성을 눌러 속성창을 연다.

사용권한에 보면 사용자 또는 역할이 있는데 아까 만들었던 사용자(로그인이 아님)를 추가하고 Execute권한에 체크를 한다. 스키마 밑에 보면 '스키마 사용 권한 보기'라는 것이 있는 이것을 누르면 연결된 스키마의 권한 정보가 나온다. 로그인 사용자를 누르고 Execute권한에 체크를 한다.(어느 사이트의 설명에서는 권한을 위임받아서 사용한다고 되있었다.)

유효 사용 권한을 눌러보면 연결이 제대로 됬는지 확인해 볼수 있다.


좀 복잡한 느낌은 들지만 나는 어차피 테이블을 다 만들어놓고 그것에 마쳐 프로그래밍을 하기때문에 어차피 쓰는권한은 한정되있으니 별로 걱정은 되지 않지만....예상보다 구하기 힘든 자료에 당황스러웠다;;;(도움말이 이렇게 허접하게 느껴질줄이야-_-;;)

이제 완벽하니 다음 포맷때는 삽질 말아야지

MSSQL 접속프로그램 다운받기(서버 운영 프로그램도 포함)

MSSQL서버에 접속하는 프로그램을 다운받으려면 아래 주소에 가서
SQL Server Management Studio Express 를 다운받는다
MSSQL 서버를 운영하고 싶다면 SQL Server 2005 Express Edition SP1 을 다운 받는다

http://www.microsoft.com/korea/msdn/vstudio/express/sql/download/