게시판을 생성하다 보면 게시물의 내용에 특수문자가 들어 가게 되는데
그것 자체가 쿼리 문의 실패를 가져 오게 된다.
그래서 쿼리문 자체에서 치환을 해주는 형태로 진행하고,
웹에서 데이터를 가져온 다음에 변환해 주는 것으로 작업을 마무리 해봤다.
--DB에서 값을 변환하는 구문
USE [MarineX]
GO
/****** 개체: StoredProcedure [dbo].[sp_ReplyInsert] 스크립트 날짜: 04/24/2009 14:55:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_ReplyInsert]
(
@TableName varchar(100),
@Name varchar(25),
@Email varchar(100),
@Title varchar(150),
@PostIP varchar(15),
@Content varchar(1000),
@Password varchar(20),
@Encoding varchar(10),
@Homepage varchar(100),
@Ref varchar(10),
@Step varchar(10),
@RefOrder varchar(10)
)
AS
SET NOCOUNT OFF;
declare @sql varchar(500)
set @sql= 'INSERT INTO ' + @TableName +
'([Name], [Email], [Title], [PostIP], [Content], [Password], [Encoding], [Homepage], [Ref], [Step], [RefOrder]) ' +
'VALUES ( ''' +
@Name+''', '''+
@Email+''', '''+
@Title+''', '''+
@PostIP+''', '''+
REPLACE(@Content, char(39), '%#39;')+''', '''+
@Password+''', '''+
@Encoding+''', '''+
@Homepage+''', '''+
@Ref+''', '''+
@Step+''', '''+
@RefOrder+ ''' )';
exec(@sql)
웹에서는 반대로 진행한다.
if (list[0].Encoding == ReplyBoard.EncodingType.Text)
{
tmpContent =
list[0].Content.ToString().Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\r\n", "<br>").Replace("%#39;", "'");
}
우선 이렇게 해서 다른 문제점이 생기는지 파악해 보자.