GSI

숫자형 데이터 형식

-       숫자형 데이터 형식은 정수, 실수 등의 숫자를 표현한다.

데이터 형식

바이트 수

숫자 범위

   

BIT

1

0 또는 1

Boolean형인 참(True), 거짓(False)에 사용

INT

4

-21 ~ +21

정수

SMALLINT

2

-32,768~32,767

정수

TINYINT

1

0 ~ 255

양의 정수

BIGINT

8

-263 ~ +263-1

정수

DECIMAL(p,[s])

5 ~ 17

N/A

고정 정밀도(p)와 배율(s)을 가진 숫자형, ) decimal(5,2)는 전체 자리수를 5자리로 하되, 그 중 소수점 이하를 2자리로 하겠다는 의미

NUMERIC

5 ~ 17

N/A

DECIMAL과 동일한 데이터 형식

REAL

4

 

FLOAT(24)와 동일

FLOAT[(p)]

4 ~ 8

 

P 25미만이면 4바이트, 25이상이면 8바이트의 크기를 할당

MONEY

8

-263 ~ +263-1

화폐 단위로 사용

SMALLMONEY

4

-21 ~ +21

화폐 단위로 사용

 

문자형 데이터 형식

데이터 형식

바이트 수

   

CHAR[(n)]

0~8000

고정길이 문자형

NCHAR[(n)]

0~8000

글자로는 0~4000, 유니코드 고정길이 문자형

VARCHAR[(n)]

0~231-1 (2GB)

가변길이 문자형, SQL Server 2005 이전 버전은 0~8000

NVARCHAR[(n)]

0~231-1

글자로는 0~230-1, 유니코드 가변길이 문자형

TEXT[(n)]

0~231-1 (2GB)

SQL Server 2005 이전 버전에서는 8000자가 넘는 글자의 경우에 사용하였으나, SQL Server 2005 에서는 VARCHAR(MAX)를 대신 사용할 것을 권장

NTEXT[(n)]

 

TEXT의 유니코드형, 마찬가지로 SQL Server 2005에서는 NVARCHAR(MAX)를 사용할 것을 권장

BINARY[(n)]

0~8000

고정길이의 이진 데이터 값

VARBINARY[(n)]

0~231-1

가변길이의 이진 데이터 값, SQL Server 2005 이전 버전은 0~8000

IMAGE[(n)]

0~231-1

SQL Server 2005 이전 버전에서는 8000자가 넘는 이진 데이터의 경우에 사용하였으나, SQL Server 2005에서는 VARBINARY(MAX)를 대신 사용할 것을 권장

 

시간과 날짜 데이터 형식

데이터 형식

바이트 수

   

DATETIME

8

1753/1/1~9999/12/31까지 저장, 정확도는 1/1000초 단위까지

SMALLDATETIME

4

1900/1/1~2079/1/6까지 저장, 정확도는 분 단위까지

 

기타 데이터 형식

데이터 형식

바이트 수

   

TIMESTAMP

8

VARBINARY(8)과 동일하며 데이터베이스 내에서 자동으로 생성된 고유 이진 숫자를 표시한다. SQL Server 내부적으로 사용되는 것이라서 신경을 쓸 필요는 없다.

WORVERSION

8

TIMESTAMP와 동일

SYSNAME

128

NVARCHAR(128)과 동일하며 데이터베이스 개체의 이름에 사용된다. 이 또한 SQL Server 내부적으로 사용된다.

CURSOR

1

T-SQL 커서를 변수로 처리함

TABLE

 

테이블 자체를 저장, 임시 테이블과 비슷한 기능.

UNIQUEIDENTIFIER

16

복제(Replication)에서 사용되는 자료형으로, 유일성을 보장하기 위한 GUID 값을 저장함.

SQL_VARIANT

 

다른 데이터 형식의 저장이 가능한 데이터형(예외도 있음)

XML

 

XML 데이터를 저장하기 위한 형식, SQL Server 2005에서 새로 나옴

 

l  char/nchar 형식(Character)은 고정길이 문자형으로 자릿수가 고정되어 있다. 예를 들어, char(100)‘ABC’ 3바이트만 저장해도, 100바이트를 모두 확보한 후에 앞에 3바이트를 사용하고 뒤의 97바이트는 낭비하게 되는 결과가 나온다. Varchar 형식(Variable Character)은 가변길이 문자형으로 varchar(100)‘ABC’ 3바이트를 저장할 경우에 3바이트만 사용하게 된다. 그래서 공간을 효율적으로 운영할 수 있다. 하지만, 대용량 데이터베이스를 사용하는 경우에는 4글자 미만을 저장하게 될 경우에는 char/nchar 형식으로 설정하는 것이 INSERT/UPDATE 시에 더 좋은 성능을 발휘한다.

l  한글(유니코드)를 저장하기 위해서 char varchar 형식으로 정의할 경우에는 2배의 자릿수를 준비해야 한다. , 최대 3글자의 한글을 저장하고자 한다면 char(6) 또는 varchar(6)로 데이터 형식을 지정해야 한다. 한글은 2바이트의 자리를 차지하기 때문이다. 이러한 문제를 간단히 하려면 nchar 이나 nvarchar 형식을 사용하기 바란다. 이 데이터 형식은 한글뿐 아니라 다른 나라의 언어의 문제가지 해결해 준다. 예를 들어, nchar(3)으로 지정하면 한글이든 영문이든 무조건 3글자를 지정할 수 있어서 더 단순하고 명확하게 문자 데이터를 입력할 수 있다.
 
하지만 만약 한글(유니코드)을 저장하지 않을 것이 확실하다면 nchar/nvarchar보다, char/varchar가 더 공간을 적게 차지해서 성능향상에 도움이 된다. 대용량 데이터베이스에서는 더욱 그렇다.

 

Posted by gsi
:

사용자 삽입 이미지

DB를 생성한 후에 GridView 등에서 사용할때 위와 같이 막혀 있는 경우가 종종 있다.
나만 그런가 하고 DB를 수없이 바꿔 보고 해봤지만.
결국은 다른데 문제가 있었다.

1. DB를 생성한 후에 기본키 생성이 안되어 있을때.
2. Configure Data Source 창에서 기본키가 Select 되지 않았을때.

이럴 경우 위와 같이 화면이 나오게 된다.
Posted by gsi
:

[DB 테이블 내용]

NoteDB
   > 테이블
      >note(dbo.note)
         nid : int : No null
         name : varchar(20) : null
         content : text : null
         email : varchar(32) : null
         date : datetime : null

[저장 프로시저 내용]

USE [NoteDB]
GO
/****** 개체:  StoredProcedure [dbo].[sp_AddNote]    스크립트 날짜: 09/27/2007 01:57:39 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER Procedure [dbo].[sp_AddNote]
(
    @Name   varchar(50),
    @Content  varchar(400),
    @Email      varchar(50)
)
AS

INSERT INTO Note
(
    name, content, email, date
)
VALUES
(
    @Name, @Content, @Email, getdate()
)

[코드 내용]

//커텍션 스트링 지정
string source = @"Data Source=GSI;Initial Catalog=NoteDB;Persist Security Info=True;User ID=sa;Password=****";
//커넥션 개체 생성
SqlConnection conn;
conn = new SqlConnection(source);
//커넥션 오픈
conn.Open();

//저장 프로시저 오픈 및 값 저장
SqlCommand cmd = new SqlCommand("sp_AddNote", conn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter param1 = new SqlParameter("@Name", SqlDbType.VarChar, 50);
param1.Value = name; //컨트롤로 부터 이름 저장
cmd.Parameters.Add(param1);

SqlParameter param2 = new SqlParameter("@Content", SqlDbType.VarChar, 400);
param2.Value = content; //컨트롤로 부터 컨텐트 저장
cmd.Parameters.Add(param2);

SqlParameter param3 = new SqlParameter("@Email", SqlDbType.VarChar, 50);
param3.Value = email; //컨트롤로 부터 이메일 저장
cmd.Parameters.Add(param3);

//
cmd.ExecuteNonQuery();

//기타 내용 추가 하기

//커넥션 닫기
conn.Close();

Posted by gsi
:

SqlDataReader 사용법

DB&XML 2007. 9. 27. 01:36 |

DB 테이블 내용
NoteDB
   > 테이블
      >note(dbo.note)
         nid : int : No null
         name : varchar(20) : null
         content : text : null
         email : varchar(32) : null
         date : datetime : null

위의 내용은 SQL DB 내용을 요약한 것입니다.
한줄 짜리 메모용으로 사용되어질 테이블 내역입니다.

위의 내용을 SqlDataReader를 사용해서 접근하고 데이터를 가져 오는 방법을 기술하였습니다.

//커넥션 스트링을 지정합니다.
string source = @"Data Source=GSI;Initial Catalog=NoteDB;Persist Security Info=True;User ID=sa;Password=****";

//커텍션 스트링을 사용해서 SqlConnection을 생성합니다.
SqlConnection conn;
conn = new SqlConnection(source);

//커텍션을 오픈합니다.
conn.Open();

//SqlDataReader 용 객체를 가져 옵니다.
//이때 쿼리문을 커넥션에 적용해서 값을 가져 오게 됩니다.
SqlDataReader reader = conn.ExecuteReader("SELECT * FROM note");

//아래의 코드는 웹에서 Response를 사용해서 값을 가져 오는 방법입니다.
Response.Write("<td>" + reader["nid"] + "</td>");
Response.Write("<td>" + reader["name"] + "</td>");
Response.Write("<td>" + reader["content"] + "</td>");
Response.Write("<td>" + reader["email"] + "</td>");
Response.Write("<td>" + reader["date"] + "</td>");

>>위와 같이 reader["컬럼이름"]를 사용해서 값을 가져 올 수 있습니다.

//커넥션을 닫습니다.
conn.Close();

Posted by gsi
:

본 내용은 클라이언트 xsl 적용 방법 입니다.

[categories.xml]

<?xml version='1.0' ?>
<?xml-stylesheet type='text/xsl' href='categories.xsl'?>
<categorylist xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
 <sql:query>
  SELECT categoryid, categoryname
  FROM categories
  FOR XML AUTO, ELEMENTS
 </sql:query>
</categorylist>

[categories.xsl]
<?xml version='1.0' ?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
  <xsl:template match='/'>
    <BODY>
      <TABLE>
        <TR>
          <TD><B>Click a Product Category</B></TD>
        </TR>
        <xsl:for-each select='categorylist/categories'>
          <TR>
            <TD>
              <A>
                <xsl:attribute name='HREF'>
                  Products.xml?categoryid=<xsl:value-of select='categoryid'/>
                  &amp;contenttype=text/html
                </xsl:attribute>
                <xsl:value-of select='categoryname'/>
              </A>
            </TD>
          </TR>
        </xsl:for-each>
      </TABLE>
    </BODY>
  </xsl:template>
</xsl:stylesheet>
Posted by gsi
:

XML 템플릿 사용

XML에서 템플릿(template)은 데이터를 처리하기 위해 질의문을 미리 생성해 놓은 문서를 말한다. 사용자가 직접 서버에 URL 질의를 입력해서 데이터를 검색하는 것보다 XML 템플릿을 이요하면 좀더 안정적이고, 제어 가능한 환경을 만들 수 있다. 템플릿은 데이터베이스에서 데이터를 검색하기 위한 질의를 하나 이상 포함하고 있고, 그 결과는 호출한 브라우저나 클라이언트 애플리케이션에서 보낸다. 템플릿은 XML-SQL 네임스페이스를 기반으로 하는 XML문서다.

HTTP와 템플릿을 사용하기 위해서 가상 이름에 템플릿 파일을 저장하고 템플릿에 접근하기 위해 URL을 통해 템플릿 파일에 접근할 수 있다. 예를 들면 products.xml이란 파일명으로 저장한 템플릿 파일이 있다면 다음과 같은 URL을 통해 접근할 수 있다.

템플릿을 사용하려면 가상 이름에 템플릿 질의 허용을 체크해 놓아야 한다. IIS에 SQL XML 구성 지원 MMC 스냅인 툴에서 설정 탭의 템플릿 질의 허용을 체크하는 것으로 해당하는 가상 디렉토리에 템플릿 질의를 허용할 수 있다.

템플릿 생성과 사용
기본적으로 XML 템플릿의 구성은 XML 문서와 동일한 구조다. 다만 SQL문을 포함하고 있다는 점이 다르다. SQL 문을 사용하기 위해서 최상위 요소에 'sql' 네임스페이스를 지정하고 <query> 요소를 사용한다. 다음은 노스윈드(northwind) 데이터베이스로부터 제품목록을 보여 주는 템플릿을 생성한 예다.

<?xml version='1.0'?>
<categorylist xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
      <sql:query>
            SELECT categoryid, categoryname
            FROM categories
            FOR XML AUTO, ELEMENTS
      </sql:query>
</categorylist>

템플릿 가상 이름(templates)을 지정한 곳(c:\sqlroots\northwinddata\)에 이 제폼 목록 템플릿을 categories.xml로 저장한다. 이 코드에서 템플릿은 ADO를 통한 질의 템플릿을 사용하는 것과 같은 형식을 가진다. 템플릿에 접근할 때 <query> 태그는 XML 데이터를 처리하며, 수행한 질의 결과는 호출한 곳으로 반환한다. 다음은 XML 템플릿을 IIS 웹 서버를 통해 실행하게 된다.

이 코드를 인터넷 웹 브라우저에서 실행해 보길 바란다.
원하는 결과가 나왔다면 다행이지만..
HTTP:500 내부 서버 오류 라는 말이 나오게 되면 xml 파일의 이상이다.

템플릿 확장
템플릿을 확장하는 방법으로 파라미터 추가가 있다. 파라미터는 사용자가 하나 이상의 다앙햔 결과를 볼 수 있게 한다. 예를 들면, 템플릿을 파라미터를 받을 수 있게 생성하고, 사용자가 CategoryID 파라미터를 넘겨 주면 제품 목록 중 특정 제품의 상세 정보를 나타나게 작성할 수 있다. 파라미터는 템플릿 헤더에 위치하고, <header> 태그를 사용해서 정의한다. 각 파라미터는 <param> 태그를 사용해 정의할 수 있다. 다름은 파라미터를 사용해서 카테고리 번호를 넘겨주고, 해당 카테고리의 제품 목록을 출력하는 XML 템플릿이다.

<?xml version='1.0'?>
<productlist xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
      <sql:header>
            <sql:param name='categoryid'>1</sql:param>
      </sql:header>
      <sql:query>
            SELECT productid, productname, unitprice
            FROM products WHERE categoryid = @categoryid
            FOR XML AUTO, ELEMENTS
      </sql:query>
</productlist>

products.xml 템플릿 문서에서는 categoryid 기본값으로 1을 지정한다 .파라미터를 인식하려면 <param> 태그를 name 속성으로 사용해야 한다. 이 이름을 @ 기호와 함께 사용해서 SQL 질의에서 사용할 수 있다. 파라미터화한 템플릿으로 데이터에 접근하기 위해 URL 질의 스트링에 파라미터를 지정한다. 다음은 카테고리 번호 2를 파라미터로 전달하고, 템플릿을 실행하는 코드이다.

categoryid를 2로 입력된 하면을 볼 수 있다.

Posted by gsi
:

저번장까지 IIS를 설치하고 가상 디렉토리까지 마무리 했습니다.
이제 HTTP 를 사용해서 어떻게 사용하는 지에 대해서 간단하게 짚고 넘어 가겠습니다.

URL 질의 사용
가상 디렉토리가 제대로 설정되어 있는지 확인하는 간단한 방법은 URL 질의를 가능하게 한 후, XML 가능 브라우저를 사용해서 질의문을 실행해 보는 것입니다. URL에서 데이터를 추출할 경우 질의와 다른 설정이 적절한지 확인하기 위해 파라미터를 이용할 수 있다. 이 파라미터는 URL 질의 문자열에 표준 형식을 사용해서 보낼 수 있다. URL과 파라미터를 분리하려면 ? 기호를 사용하고, 여러개의 파라미터를 보낼 때는 각 파라미터를 & 기호를 이용해서 분리한다. 다음 URL 포맷은 2개의 파라미터를 이요해서 URL로 데이터에 접근할 때 사용한 예입니다.

URL 질의를 이용해서 FOR XML 질의를 포함하는 SQL 파라미터를 지정할 수 XML 문서를 추출할 수 있다. FOR XML 질의의 결과가 잘 구성한 XML 문서를 반환하기 보다 XML 데이터를 반환하기 때문에 최상위 요소를 URL에 반드시 지정해야 한다. 그래서 최상위 요소를 정확히 지정하거나 최상위 요소 파라미터를 지정해 처리할 수 있다.

다음 예제는 Northwind 데이터베이스의 Products 테이블로부터 데이터를 검색하는 것으로 사용하는 URL 질의다. 최상위 요소는 SQL 파라미터의 일부로 포함한다. 최상위 요소는 <catalog>로 임의의 요소를 정의하였다.

http://localhost/northwinddata?sql=SELECT+'<catalog>';SELECT+*+
FROM+products+FOR+XML+AUTO;SELECT+'</catalog>
또는
http://localhost/northwinddata?sql=SELECT+*+FROM+products+FOR+XML+AUTO&
root
=catalog

위의 내용을 인터넷 브라우저에서 확인 가능하다. 한번씩 해보길 바란다.

URL 질의를 하나하나 SQL문으로 작성하는 것은 상당히 번거로운 작업이다. 이러한 번거로움은 T-SQL의 EXECUTE 구문이나 ODBC를 호출해 저장 프로시저를 수행하면 해결할 수 있다. 효율적으로 URL 질의를 사용할 수 있을 뿐만 아니라 보안 측면에서도 훨씬 유리하다. 실제로 UTL질의 문을 한번 살펴 보자.

사용자 삽입 이미지
URL 질의에서 저장 프로시저를 호출할 수 있게, EXECUTE 구문과 저장 프로시저 이름, 파라미터를 브라우저 주소란에 입력한다.

결과는 직접 확인 바랍니다.



 

Posted by gsi
:

테스트 환경 : SQL 2000 입니다.

IIS 가상 디렉토리를 통한 데이터베이스 처리
SQL 서버 2000의 HTTP 처리를 위한 툴은 MMC에 스냅인 된 IIS에 SQL XML 구성 툴을 사용한다. SQL XML 지원 구성을 실행하려면 [시작]>[프로그램]>[Microsoft Sql server]>[IIS에 SQL XML 지원 구성]을 차례로 선택하여 실행한다.

사용자 삽입 이미지

IIS에 SQL XML 지원 구성을 실행하면 관리창을 볼 수 있다. 관리창을 이용하면 IIS의 가상 디렉토리로 이루어진 SQL 서버 2000의 XML 처리를 생성하고 관리할 수 있다. 관리 창을 수행한 후, 서버를 확장하면 로컬 컴퓨터에 구성한 웹 사이트는 왼쪽창에 나타난다. 왼쪽 창의 IIS 가상 디렉토리 관리를 선택해 서버를 관리할 수 있고, 원격 시스템 동작 메뉴를 이용해 등록할 수도 있다.

새로운 가상 디렉토리를 설정하려면 먼저 처리할 웹 사이트를 선택해야 한다. 기본 웹 사이트나 [동작] 메뉴를 선택한 후, [새로 만들기]>[가상 디렉토리]를 선택한다. 새로운 가상 디렉토리를 구성하는 대화 상자가 열린다.
사용자 삽입 이미지

가상 디렉토리 이름과 경로 지정
가상 디렉토리는 URL을 처리 하는 부분이다. 이름은 인트라넷 환경 형식인 'http://서버경로/가상디렉토리' 형태로 만든다. 가상 디렉토리 부분에는 IIS 서버 URL 중 도메인 부분을 지정한다.

자신의 시스템을 로컬에서 사용할 경우 http://localhost/northwinddata 형태로 사용할 수 있다. [로컬 경로]에서는 가상 디렉토리 지정된 물리적인 위치의 전체 경로를 지정할 수 있다.
사용자 삽입 이미지

가상 디렉토리 보안 설정
SQL 서버 2000의 인증 방법은 크게 두 가지로 나눌 수 있다. 첫번째는 윈도우 서버의 운영체제와 SQL 서버간의 통합한 인증 절차다. 운영체제 차원에서 인증 과정을 통과하면 자동적으로 SQL 서버의 인증도 통과하는 방식이다. 두번째는 운영체제와 SQL 서버의 분리한 인증방법으로, SQL 서버에서 인증 과정을 별도로 관리하는 것을 말한다. 어떤 인증 방법을 사용해도 상관없이, 설정한 인증 방법에 따라[보안] 설정을 하면 된다.
사용자 삽입 이미지

데이터 원본 지정
새 가상 디렉토리의 등록 정보 대화 상자의 [데이터 원본] 탭에서 SQLISAPI 애플리케이션에 데이터를 제공할 [SQL Server]와 [데이터베이스]를 지정한다. 데이터를 저장할 서버를 지정해야 하고, 데이터가 있는 데이터베이스 이름도 지정한다.
사용자 삽입 이미지

데이터 접근 지정
가상 디렉토리를 통한 데이터접근할 수 있게 설정하기 위해서 새 가상 디렉토리 등록 정보의 [설정]탭을 이용한다.

설정은 네 가지 중 선택할 수 있다. 모든 질의 방식을 지원받으려면 네 가지를 모두 체크하면 된다.

  • URL 질의 허용
  • 템플릿 질의 허용
  • XPath 허용
  • POST 허용

사용자 삽입 이미지

가상 이름(Virtual Name) 생성
가상 디렉토리 등록 정보 대화 상자의 [가상 이름] 탭에서 디렉토리를 위한 가상 이름을 설정할 수 있다. 가상 이름은 템플릿 스키마 또는 데이터베이스 객체를 지정하기 위해 URL에서 사용한다. 가상 이름은 템플릿, 스키마, 데이터베이스 객체형으로 가상 이름의 [새로 만들기]를 선택해 원하는 가상이름, 유형, 경로를 생성할 수 있다.
사용자 삽입 이미지
지정한 폴더에 XML 템플릿과 스키마를 포함하게 가상 이름을 사용할 수 있다. 예를 들면 Northwind data 가상 디렉토리 애플리케이션에서 products.xml 이라고 정의한 템플릿을 포함하는 폴더에 가상 이름 templates를 지정할 수 있다. 이 템플릿은 http://localhost/northwinddata/templates/products.xml과 같은 URL을 통해 접근할 수 있다.

여기까지 해서 설정이 모두 완료가 되었습니다. IIS(인터넷 정보 서비스)를 열어 보면 가상 디렉토리가 설정되어져 있는 것을 볼 수 있습니다.

이상..

Posted by gsi
:

SQL 서버 2000에서 제공하는 새로운 기능 중 HTTP를 이용해서 XML 데이터에 접근하는 방법을 알아본다. HTTP를 이용해서 인트라넷이나 인터넷 기반 애플리케이션을 구축할 수 있다. 이 방법은 Micorsoft IIS의 가상 디렉토리를 구축하는 방법으로 XML 데이터를 처리하거나 다른 애플리케이션에 쉽게 적용할 수 있다. HTTP로 데이터를 처리하는 기능으로 ASP 애플리케이션보다 적은 코드를 이용하면서도 쉽고 빠르게 데이터 중심적인 웹 사이트를 구축할 수 있다.

XSL 스타일시트를 XML 데이터에 적용해서 HTML 문서로 변형한 후, 브라우저 기반 클라이언트로 전송하거나 WML과 같은 다른 문서 형태로 변환해서 WAP 형식으로 휴대폰, PDA 등에 사용이 가능해 진다.

SQL 서버의 HTTP 처리 구조
SQL 서버는 SQLISAPI(SQL 서버에서 제공하는 ISAPI 애플리케이션)FMF DLDYDGOTJ ㅗㅅ세FMF CJFLGKSEK. IIS에 가상 디렉토리 루트를 생성한 후, HTTP URL을 이용하면 SQL 서버의 데이터베이스에 접근할 수 있다. SQLISAPI 애플리케이션은 SQL 서버 2000의 OLE-DB 공급자를 이용해서 클라이언트로 XML이나 HTML 데이터를 보낸다.

SQL 서버를 IIS 웹 서버와 동일한 시스템에 구축할 수 있다. SQL 서버에는 데이터를 테이블에 저장할 수 있고, 클라이언트로부터 IIS 웹 서버에 의해 질의문을 전송받고, 전송받은 질의문을 실행해서 질의한 결과의 데이터를 XML 문서의 형태로 IIS 웹 서버를 통해 클라이언트에게 전송한다. 클라이언트 애플리케이션은 다음과 같이 네 가지의 방법 중 하나로 데이터를 요청할 수 있다.

  • FOR XML 질의문을 질의 스트링으로 URL에 보내는 방법
  • XML 질의 템플릿을 ISAPI 애플리케이션에 포스팅 하는 방법
  • XML 질의 템플릿을 웹 서버의 가상 루트에 지정하는 방법
  • XML 스키마를 웹 서버의 가상 루트에 정의하는 방법





 

Posted by gsi
:

Connection의 이해

Connection은 데이터 저장소와 .NET 응용 프로그램 사이의 물리적 커뮤니케이션을 다른다. Connection 객체는 데이터 공급자의 한 부분이기 때문에. 각각의 데이터 공급자는 자신만의 Connection 객체를 구현한다. .NET 프레임 워크가 제공하는 두 개의 데이터 공급자는 System.Data.OleDB 네임스페이스에서 OleDbconnection을 구현하고, System.Data.SqlClient 네임스페이스에서 SqlConnection을 구현한다.

OleDbConnection은 보통 OLE DB를 사용하는데, Microsoft SQL Server를 포함하여 다른 OLE DB 공급자에서도 사용할 수 있다. SqlConnection 은 OLE DB 공급자를 거치지 않고 직접 SQL Server로 접속하기 때문에, SQL Server일 경우에 효과적이다.


Connection을 직접 생성할 수도 있지만. 여기서는 테스트를 쉽게 하기 위해서
DataAdapter를 사용했다.


OleDbDataAdapter 또는 SqlDataAdapter를 사용해서 공급자를 선택하고 서버명, 로그인 정보를 입력하고 원하는 데이터 베이스를 선택 했다.

그리고 쿼리 생성기를 사용해서 해당 테이블의 컬럼 정보를 선택해서 생성하였다.

이렇게 하면 디자인 뷰의 화면 하단에 oleDbDataAdapter1, oleDbConnection1 또는 sqlDataAdapter1, sqlConnection1 이 생기게 된다.

Connection을 이해 하기 위해서 두개의 ConnectionString를 모두 추가 하였고 이것을 사용해서 테스트를 진행 했다.

두개의 커넥션을 모두 받을수 있는 System.Data.IDbConnection 변수를 하나 생성하였다.
private System.Data.IDbConnection myconnection;

그리고 Ole 또는 Sql 을 선택해서 myconnection에 설정하게 된다.
myconnection = this.oleDbConnection1;

myconnection 은 아래와 같은 3개의 정보를 담고 있다.
1. myconnection.ConnectionString.ToString();
2. myconnection.Database.ToString();
3. myconnection.ConnectionTimeout.ToString();



커넥션을 열고 닫고 하는 과정은 아래와 같다.
this.myconnection.Open();  //커넥션을 오픈한다.
MessageBox.Show(this.myconnection.State.ToString()); //커넥션 상태를 알아본다.
this.myconnection.Close();  //커넥션을 닫는다.


[관련내용]
ConnectionString 속성
ConnectionString은 어느 Connection 객체이든지 간에 가장 중요한 속성이며, 사실상 나머지 속성은 읽기 전용이다. 이들 나머지 속성들은 ConnectionString이 제공한 값에 의해 생성된 Connection에 의해 설정된다.

모든 ConnectionString은 동일한 포멧을 가진다. 그것은 키워드와 값이 한 세트로 구성되고 세미콜론(;)으로 구분되며, 전체가 작은 따옴표나 큰 따옴표로 쌓여 있다.

"keyword=value;keyword=value"

키워드 이름은 대소문자 구별을 하지 않는다. 그러나 데이터 소스에 의존하는 값은 그렇지 않을 수 있다. 작은 따옴표 혹은 큰 따옴표의 사용은 문자열의 기본 규칙을 따른다. 예를 들면, 데이터베이스의 이름이 Becca's Data이면, ConnectionString은 큰 따옴표를 써야 한다. "Database=Becca's Data", 'Database=Becca's Data' 는 에러를 일으킬 것이다.

동일한 키워드를 여러번 사용한다면 마지막 인스턴스가 사용될 것이다. 예를 들어, ConnectionString에 databast=Becca's Data ; database=Northwind"를 준다면, 초기 데이터베이스는 NorthWind가 될 것이다. 다중 인스턴스를 사용하는 것이 구문 에러를 발생하지 않는 가장 이상적인 방법이다.

ConnectionString 형식은 어렵지 않지만, 내용은 데이터 공급자마다 항상 고유하기 때문에 내용을 정의 하는 것이 어려울 수 있다. 그러나 [데이터 연결 속성] 대화 상자를 이용해서 디자인 타임 연결을 생성하고, 그 값을 복사함으로써 쉽게 작업을 할 수 있다.

ConnectionString은 연결이 닫힐 때만 설정할 수 있다. 설정될 때 Connection 객체는 문자열 문법을 검사하고 나머지 속성(앞에서 읽기 전용이고 했던 것을 기억할 것이다)들을 설정할 것이다. ConnectionString은 연결이 열려 있을 때에 완전히 확인할 수 있다. 만약 연결이 확인되지 않거나 제공하지 않는 속성을 발견하면 오류가 발생할 것이다(객체가 사용될 때 의존하고 있는 OleDbException과 SqlDbException 둘 중 하나에서 발생한다.).


이상...
이론 내용은 Microsoft ADO.NET Step by Step 내용 2장에서 발췌 하였음...






Posted by gsi
:

FOR XML 사용방법#1

DB&XML 2007. 9. 14. 16:59 |

상세한 내용은 온라인에 있는 MSDN을 참고 바랍니다.
http://msdn2.microsoft.com/en-us/library/ms345137.aspx


select * from joyboard_notice for xml auto, type;
>> 결과
<joyboard_notice no="1" ... category="" />
<joyboard_notice no="2" ... category="" />


SELECT (SELECT * FROM joyboard_notice FOR XML AUTO, TYPE).query(
'<doc>{
   for $c in /joyboard_notice
   return
     <Person name="{data(
$c/@id)}"/>
 }</doc>')

>> 결과
<doc>
  <Person name="jaeukan" />
  <Person name="usarabia" />
</doc>
>> joyboard_notice : 테이블 이름
>> data($c/@id) : id는 컬럼명

SELECT ID as "@id",
  Nick
FROM joyboard_notice
FOR XML PATH('Customer'), ROOT('doc')

>> 결과
<doc>
  <Customer id="jaeukan">
    <Nick>Azitro</Nick>
  </Customer>
  <Customer id="usarabia">
    <Nick>사라비아</Nick>
  </Customer>
</doc>
Posted by gsi
: