2011-10-10 64 views
0

我做一个DataSet和DataTable在C# ,然后使一个SQL Server数据库(我用的报表查看器)的报告。 我需要搜索值字段数据库 时,我的价值是英语像“测试”每一件事情是没事的, 但是当我的价值是阿拉伯语\波斯\波斯语报表查看器这么想的告诉我任何事情。国际化和参数化查询

我的查询是这样的:

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 = بطری) 

这是确定的,但这种“N'exp””剂量不工作时我使用参数。我怎样才能解决这个问题?

+0

是DB /列UTF8? '@ Product'是什么类型?什么是使用的连接字符串?这是什么版本的SQL Server? – Yahia

+0

@Product is string \ NvarChar and string connection =“Data Source =。\\ SQLEXPRESS; AttachDbFilename = C:\\ KianiWorkShopDB \\ Kiani.mdf; User Instance = True; Integrated Security = True;”;我的verison SQL Server是2008,关于你的第一个问题我控制它并告诉你 –

+0

当你创建一个新的数据库时,MS SQL Server默认支持UTF-8。您可以使用nvarchar数据类型来存储unicode数据。 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 = "بطری";