2011-10-10 92 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 = "بطری";