테이블 필드명을 굳이 사용할 일이 별로 없습니다만,
최근 플렉스 관련된 협업을 진행한 적이 있는데...
데이터 통신을 xml로 합니다. 거기에 태그명은 알아서 적어달라고 하더군요.
그래서 당연히 머리 안쓰고자 필드명으로 처리하겠다고 했습니다.

본 내용은 필드명을 알아내는 작업이 주라고 봐도 되겠습니다.

일단 함수는 아래와 같습니다.

'**
' 레코드셋 rs로 xml 만들기
' rs : 레코드셋 객체
' envelopeTag : xml root 태그
' dataTag : 데이터 구분 태그
'* 
Function getPrintXmlData(rs, envelopeTag, dataTag)
	strReturn = "<?xml version=" & chr(34) & "1.0" & chr(34) & " encoding=" & chr(34) & "utf-8" & chr(34) & " ?> " & vbCrLf
	strReturn = strReturn & "<" & envelopeTag & ">" & vbCrLf

	Do While Not rs.EOF
		strReturn = strReturn & "<" & dataTag & ">" & vbCrLf

		For Each f In rs.Fields
			fieldName = f.Name
			fieldValue = rs(fieldName)

			strReturn = strReturn & "    <" & fieldName & "><![CDATA[" & fieldValue & "]]></" & fieldName & ">" & vbCrLf
		Next

		strReturn = strReturn & "</" & dataTag & ">" & vbCrLf
		rs.MoveNext
	Loop

	strReturn = strReturn & "</" & envelopeTag & ">" & vbCrLf

	getPrintXmlData = strReturn
End Function

전체 구문은 모두 텍스트로 전제한 후 작업을 했습니다. 그래서 모든 필드값은 CDATA로 감쌌습니다.

해당 내용이 Integer 형태로 전달할 필요성이 있다면, 숫자형을 확인해야 겠죠??

중간에 레코드셋의 필드명 확인하는 구문이 있으니, 이부분을 참조하시면 도움이 될 듯 합니다. ^^;;

참 쉽죠잉?? ^^;;


 
신고

WRITTEN BY
비트센스
뷰파인더로 보는 프로그래머의 세상 페이스북 @bitsense 트위터 @picory 스카이프 picory MSN drawhalf@dreamwiz.com

트랙백이 하나이고 , 댓글이 없습니다.
secret
강좌라고 하기에는 어쩐지 부끄러운 내용일 것 같습니다만.. ^^;;

디자인 분리를 위해서 기초작업을 하도록 하겠습니다.

보통 일반적으로 asp 에서는 function을 사용해서 기능을 정리할 것입니다.
하지만 저는 function 대신에 재사용성을 고려해 대부분의 기능을 class화 하여 정리해서 사용하겠습니다. 살짝 OOP(객체 지향) 흉내도 낼 겸이요.. ^^:;

그 1차 관문!!
기본인 db connection class를 만들어 보도록 하겠습니다.

공용파일의 lib 디렉토리 위치는
/wwwroot/_CMS/lib/common/
입니다.

파일명은 dbConn.asp로 하겠습니다.

<% 
Class dbConn
    Private objConn 'as ADODB.Connection
    Public connString
    
    dim DBHost, DBName, DBUser, DBPass
 
    '클래스 생성자
    Sub Class_Initialize()
        Set objConn = Nothing
        
        DBHost = "localhost"
        DBName = "public"
        DBUser = "test"
        DBPass = "test"
        
        connString = "Provider=SQLOLEDB.1;Password=" & DBPass & ";Persist Security Info=False;User ID=" & DBUser & ";Initial Catalog=" & DBName & ";Data Source=" & DBHost
    End Sub
 
    '클래스 소멸자
    Sub Class_Terminate
        Set objConn = Nothing
    End Sub
 
    'Connection 프로퍼티 Get
     Public Property Get Connection() 'as ADODB.Connection
         If objConn Is Nothing Then
             Set objConn = Server.CreateObject("ADODB.Connection")
             objConn.Open connString
         End If

         Set Connection = objConn
     End Property


     '레코드셋 질의
     Public Function ExecuteQuery(strSQL) 'as ADODB.Recordset
        Dim objRs 'as ADODB.Recordset
        Set objRs = Server.CreateObject("ADODB.Recordset")

        
        On Error Resume Next

        objRs.CursorLocation = 3 
        objRs.Open strSQL, Me.Connection, 0

        If Err.Number <> 0 Then
            Response.Write "<b>데이터베이스 에러</b> (ExecuteQuery)<br>" & _
                "질의어 : " & strSQL & _
                Err.Description

            objRs.Close
            Set objRs = Nothing
            Me.Close
            Response.End
        End If

  
        On Error GoTo 0

        Set ExecuteQuery = objRs
    End Function
 
    '업데이트 질의
    Public Sub ExecuteCommand(strSQL)
        On Error Resume Next
  
        Me.Connection.Execute strSQL
  
        If Err.Number <> 0 Then
            Response.Write "<b>데이터베이스 에러</b> (ExecuteCommand)<br>" & _
                "질의어 : " & strSQL & _
                Err.Description
            Response.End
            Me.Close
        End If
   
        On Error GoTo 0
  
    End Sub

    
    '데이터베이스 연결 닫기
    Public Sub Close()
       Set objConn = Nothing
    End Sub
End Class
%> 

DB Connection을 사용해 보셨다면 위 클래스의 구조는 익히 아실 것이라고 봅니다.
Class의 생성자와 소멸자, 그리고 Public Property Get 으로 ADODB.connection 객체 정보를 받아오는 부분도 눈여겨 보실만 할겁니다.

사용 샘플 소스는 아래와 같습니다.

<!-- #include virtual="/_CMS/lib/common/dbConn.asp" -->
<%
Set oDB = new dbConn

getQuery = "" &_
   "select * " &_
   "from ps_member " &_
   "order by " &_
   "  mem_id"
Set rs = oDB.ExecuteQuery(query)

Do While Not rs.EOF
   ...
Loop

oDB.Close
%>

이상입니다.. 쉽죠잉?? ^^;;

신고

WRITTEN BY
비트센스
뷰파인더로 보는 프로그래머의 세상 페이스북 @bitsense 트위터 @picory 스카이프 picory MSN drawhalf@dreamwiz.com

받은 트랙백이 없고 , 댓글이 없습니다.
secret
이제 asp 개발자들은 ASP.NET을 말하고 있습니다.
이런 시기에 asp를 말하고 강좌를 한다는 것이 우습기는 하지만, 아직 asp는 실제 서비스 비중이 줄어들기는 하지만 여전히 많은 것 같습니다.

근래에 잠깐 작업을 하면서 재사용성을 생각해서 class로 변환을 해본 소스들을 공유하고자 합니다. 머 100% 모두 가져다 사용하시면 좋을 거 같기는 하지만, 워낙 급조한 부분들이 많은 지라 기본 엔진 외에는 써먹지 못할 거 같다는 생각입니다. ^^;;
물론 이 소스들 많은 부분이 커스터마이징 되거나 개선되어야 할 부분이 많습니다.

ASP.NET은 이제 완전히 디자인이 분리되어 사용되고 있습니다만, asp는 아시겠지만 asp코드(프로그램)과 디자인(html 코드)이 엉켜서 사용되고 있습니다.

디자인을 분리하기 위해서는 디자인 부분인 html만 있는 템플릿이 필요하고,
이것을 읽어서 활용할 프로그램이 필요합니다.

이 부분을 사용하면서,
db, fileupload 등 자주 사용하는 것은 class로 만들어 재활용성을 높혔습니다.

이번 강좌의 내용은
1. db class 활용
2. fileupload class 활용
3. design 영역 호출(skin, templet DB / file 호출)
4. 프로그램 활용 방법
이렇게 구분해서 하려고 합니다.

하다가 보면 내용이 중복되거나, 먼소린지.. 하는 부분도 있을 거구요.. ^^;;
그런 부분은 강좌를 진행하면서 수정을 하도록 하겠습니다. ^^;;

asp 초보자 님들에게 좋은 내용이 되었으면 하는 바램입니다.
저역시 몇년동안 asp를 제대로 활용하지 않은 초보자라.. ^^;;
소스가 엉성하더라도 알아서 봐 주십시요.
신고

WRITTEN BY
비트센스
뷰파인더로 보는 프로그래머의 세상 페이스북 @bitsense 트위터 @picory 스카이프 picory MSN drawhalf@dreamwiz.com

받은 트랙백이 없고 , 댓글이 없습니다.
secret