<자리비움> .NET 코더의 개발 이야기..  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
Binary 값으로 Page 주소 찾기

/*

           Author             : jaribium@hotmail.com

           HomePage        : jaribium.tistory.com

 

           description

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

           2008.09.16         Binary 값으로Page 주소찾기

 

*/

CREATE PROCEDURE sp_AllocationPageData

           @HeapRID BINARY(8)

AS

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET NOCOUNT ON

 

SELECT

           '(' + CONVERT (VARCHAR (6), 

                     CONVERT (INT, 

                                 SUBSTRING (@HeapRID, 6, 1) + 

                                 SUBSTRING (@HeapRID, 5, 1))) + 

           ':' + CONVERT (VARCHAR (20), 

                     CONVERT (INT, 

                                 SUBSTRING (@HeapRID, 4, 1) + 

                                 SUBSTRING (@HeapRID, 3, 1) + 

                                 SUBSTRING (@HeapRID, 2, 1) + 

                                 SUBSTRING (@HeapRID, 1, 1))) +

           ':' + CONVERT (VARCHAR (20),

                     CONVERT          (INT,

                                 SUBSTRING (@HeapRID, 10, 1) + 

                                 SUBSTRING (@HeapRID, 9, 1) + 

                                 SUBSTRING (@HeapRID, 8, 1) + 

                                 SUBSTRING (@HeapRID, 7, 1))) +

           ')' AS PageAllocation

 

SET NOCOUNT OFF

GO

 

EXEC sys.sp_MS_marksystemobject sp_AllocationPageData;

GO



-- Ex.

exec sp_AllocationPageData 0x1E01000001004700


/*

결과

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

파일명: 페이지:슬롯번호

1:286:71

*/

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Tag : HEAP RID(Key), It, MSSQL, Page Allocation


04. 게시판 만들기 II - 프로젝트 구성


프로젝트는 이전 스터디와 동일하게 구성하였습니다.

사용자 삽입 이미지


Core 클래스 프로젝트의 BLL (Business Logic Layer) 에는 비즈니스 관련 클래스들이 있으며, DAL 폴더에는 데이터베이스 작업과 관련된 클래스들이 존재합니다.

 

간단히 살펴보겠습니다.

 

- Data Access Layer

DAL 폴더 안의 DBManager 클래스는 데이터베이스 연결 문자열을 web.config에 설정하지 않고 클래스 파일을 따로 생성하였습니다.

 

DALManager 파일은 DAL 인스턴스를 만드는 정적 Instance 프로퍼티가 설정되어 있습니다.

 

~Manager 클래스는 추상 클래스로써 DBManager를 상속 받으며, 각각의 DAL 부분에 해당하는 메소드들에 대한 추상 메소드가 존재합니다. 그리고, ~DAL 클래스에서 프로시저에서 읽어 온 데이터를 BLL 폴더 안에 있는 ~Model 클래스에 값을 채워 넣을 수 있도록 가상 메소드를 만들어 보았습니다.

 

- Business Logic Layer

BLL ~Model 클래스들은 DALBLL 에서 사용하는 데이터를 채워 넣고 설정하며, ~Biz 클래스들은 ~DAL 클래스를 사용하여 데이터에 대한 엑세스를 제공하고, 대부분 유효성 검사 룰을 제공하고, 제약을 체크하고, 데이터의 객체 지향적인 표현과 데이터를 조작하는 메소드들 제공하는데 이용된다고 합니다.. HaHaHaHa… -_-;

다음 포스팅에서는 코드를 간단히 살펴보도록 하겠습니다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Tag : 3Tire, Study, 프로젝트 구성


03. 게시판 만들기 II - 코멘트 프로시저

/*

300. 코멘트관련코드

 

311. 등록성공

312. 등록시트렌젝션오류

 

321. 수정성공

322. 수정트랜젝션오류

 

331. 삭제성공

332. 삭제트랜젝션오류

*/

 

/*

코멘트등록

*/

CREATE PROC [dbo].[msp_InsertComment]

           @ContentID      INT

,          @RefCommentID INT

,          @MemberID      INT

,          @Description     NVARCHAR(4000)

,          @IPAddress       VARCHAR(15)

,          @RetVal           INT = 0 OUTPUT

AS

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET NOCOUNT ON

BEGIN TRAN

 

INSERT INTO [dbo].[TBC_Comment]([ContentID], [RefCommentID], [MemberID], [Description], [IPAddress], [InsertDate], [UpdateDate])

VALUES(@ContentID, @RefCommentID, @MemberID, @Description, @IPAddress, GETDATE(), GETDATE())

IF @@ERROR <> 0 GOTO RollBackTran

 

SET @RetVal = 311

 

COMMIT TRAN

GOTO CommitTran

RollBackTran:

IF @@TRANCOUNT > 0 BEGIN

ROLLBACK TRAN

SET @RetVal = 312

END

CommitTran:

GO

 

/*

코멘트수정

*/

CREATE PROC [dbo].[msp_UpdateComment]

           @CommentID    INT

,          @ContentID      INT

,          @RefCommentID INT

,          @MemberID      INT

,          @Description     NVARCHAR(4000)

,          @IPAddress       VARCHAR(15)

,          @RetVal           INT = 0 OUTPUT

AS

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET NOCOUNT ON

BEGIN TRAN

 

UPDATE [dbo].[TBC_Comment]

SET      [Description]      = @Description

,          [IPAddress]        = @IPAddress

,          [UpdateDate]     = GETDATE()

WHERE  [CommentID]     = @CommentID

AND     [MemberID]       = @MemberID

IF @@ERROR <> 0 GOTO RollBackTran

 

SET @RetVal = 321

 

COMMIT TRAN

GOTO CommitTran

RollBackTran:

IF @@TRANCOUNT > 0 BEGIN

ROLLBACK TRAN

SET @RetVal = 322

END

CommitTran:

GO

 

/*

코멘트삭제

*/

CREATE PROC [dbo].[msp_DeleteComment]

           @CommentID               INT

,          @MemberID                 INT

,          @RetVal                      INT = 0 OUTPUT

AS

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET NOCOUNT ON

BEGIN TRAN

 

DELETE FROM    [dbo].[TBC_Comment]

WHERE             [CommentID]     = @CommentID

AND                [MemberID]       = @MemberID

IF @@ERROR <> 0 GOTO RollBackTran

 

SET @RetVal = 331

 

COMMIT TRAN

GOTO CommitTran

RollBackTran:

IF @@TRANCOUNT > 0 BEGIN

ROLLBACK TRAN

SET @RetVal = 332

END

CommitTran:

GO

 

CREATE PROC [dbo].[msp_SelectCommentList]

           @ContentID      INT

AS

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET NOCOUNT ON

 

SELECT             a.[CommentID]

,                     a.[ContentID]

,                     a.[RefCommentID]

,                     a.[MemberID]

,                     a.[Description]

,                     a.[IPAddress]

,                     a.[InsertDate]

,                     a.[UpdateDate]

,                     b.[NickName]

,                     b.[Email]

,                     b.[HomePage]

,                     ISNULL((SELECT [Description] FROM [dbo].[TBC_Comment] WHERE [CommentID] = a.RefCommentID),'') as RefDescription

FROM              [dbo].[TBC_Comment] a

INNER JOIN       [dbo].[TBM_Member] b ON b.[MemberID] = a.[MemberID]

           WHERE             a.[ContentID] = @ContentID

ORDER BY         a.[CommentID] DESC

 

SET NOCOUNT OFF

GO


이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Tag : Stored Procedure, Study


BLOG main image
msn : jaribium@hotmail.com
 Notice
 Category
전체 (37)
DevStory (2)
Study (19)
.NET (10)
MSSQL (6)
이전자료 (0)
 TAGS
Study MSSQL Index Covered Index OrderNo 순서 변경 It loop Covering Index Clustered Index
 Calendar
«   2009/07   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
 Recent Entries
Binary 값으로 Page 주소 찾기
04. 게시판 만들기 II - 프로.. (2)
03. 게시판 만들기 II - 코멘..
02. 게시판 만들기 II - 게시..
01. 게시판 만들기 II - 테이..
MSSQL 날짜 및 시간 함수
MSSQL 집계 함수
MSSQL 시스템 함수
XSS(Cross Site Scripting) 와..
소계..
 Recent Comments
도움이 되셨다니 저로..
자리비움1 - 04/19
안녕하세요 훈스닷넷..
히데 - 04/17
public 이나 protecte..
자리비움 - 02/27
보호수준때문에 Board..
꼬기얌얌얌 - 02/23
지적 감사합니다. ^^;
자리비움 - 01/31
흠... //[[CDATA 있는..
TheProdigy - 01/29
내일 오후 8시 넘어서..
자리비움 - 2008
프로시저에서는 제대..
깜장하트 - 2008
retVal 이 안뜨는 이..
자리비움 - 2008
질문~ 따라했봤는데....
깜장하트 - 2008
 Recent Trackbacks
[mssql] DATETIME 변환
멀고 가까움이 다르기..
잠재적인 위험 요소..
<자리비움> .NET 코더..
XSS(Cross Site Scrip..
<자리비움> .NET 코더..
 Archive
2008/09
2008/08
2008/05
 Link Site
PANG\'s
{ io2tree's Dev... }
{ 깜장하트 :: 닷넷 공부중..
김정선의 SQL Server 이야기
 Visitor Statistics
Total : 7,900
Today : 0
Yesterday : 1
rss