2011-10-10 4 views
0

C# 에서 DataSet과 DataTable을 만든 다음 SQL Server DB에 대한 보고서를 만듭니다 (I Use Report Viewer). 내 값이 영어 인 경우 데이터베이스 의 값 필드를 검색해야합니다. 모든 것이 정상인 "테스트"와 마찬가지로 이지만 내 값이 아랍어 \ 페르시아어 \ 페르시아어 인 경우 보고서 뷰어에 표시되지 않습니다.국제화 및 매개 변수화 된 쿼리

SELECT DetailsProducts.DarSad, Materials.Material, Products.Product 
FROM DetailsProducts INNER JOIN 
    Materials ON DetailsProducts.MaterialID = Materials.ID INNER JOIN 
    Products ON DetailsProducts.ProductID = Products.ProductID 
WHERE (Products.Product = @Product) 

나는 하나 개의 값을 필요로 할 때 내가이 쿼리 사용할 수 있습니다 :

내 질문은 이것이다

SELECT DetailsProducts.DarSad, Materials.Material, Products.Product 
FROM DetailsProducts INNER JOIN 
    Materials ON DetailsProducts.MaterialID = Materials.ID INNER JOIN 
    Products ON DetailsProducts.ProductID = Products.ProductID 
WHERE (Products.Product =N'بطری') //(Bottle = بطری) 

그것은 OK입니다, 그러나 이것은 "N'exp '은"때 작동하지 복용량 나는 매개 변수를 사용한다. 이 문제를 어떻게 해결할 수 있습니까?

+0

는 DB/열 UTF8입니까? 어떤 유형이'@ Product'입니까? 사용 된 연결 문자열은 무엇입니까? 어떤 SQL Server 버전입니까? – Yahia

+0

@Product는 string \ NvarChar이고 문자열 연결 = "데이터 원본 =. \\ SQLEXPRESS; AttachDbFilename = C : \\ KianiWorkShopDB \\ Kiani.mdf; 사용자 인스턴스 = True; 통합 보안 = True;"; 내 verison SQL Server는 첫 번째 qusetion에 대한 2008입니다. 제어하고 알려줍니다. –

+0

새 데이터베이스를 만들 때 MS SQL Server는 기본적으로 UTF-8을 지원합니다. nvarchar 데이터 형식을 사용하여 유니 코드 데이터를 저장할 수 있습니다. http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/73e930a8-ed50-486d-b5c1-604443f8365f –

답변

0

시도가 당신의 매개 변수를 만들 수 있습니다 SqlDbType 동일 SqlDbType.NVarChar에 :

SqlParameter parameter = new SqlParameter(); 
parameter.ParameterName = "@Product"; 
parameter.SqlDbType = SqlDbType.NVarChar; 
parameter.Direction = ParameterDirection.Input; 
parameter.Value = "بطری"; 
관련 문제