2011-10-10 4 views
0

Je crée un DataSet et un DataTable en C# puis crée un rapport pour une base de données SQL Server (I Use Report Viewer). Je dois rechercher le champ Valeur dans la base de données lorsque ma valeur est anglaise Comme "test" tout est OK, mais lorsque ma valeur est arabe \ Persian \ Farsi, le visualiseur de rapports ne me montre rien.Internationalisation et requêtes paramétrées

Ma requête est la suivante:

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) 

Quand je besoin d'une valeur que je peux utiliser cette requête:

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

Il est OK, mais cette «N'exp » ne marche pas si J'utilise les paramètres. Comment puis-je réparer cela?

+0

est le UTF8 DB/colonne? quel type est '@ Product'? Quelle est la chaîne de connexion utilisée? quelle version de SQL Server est-ce? – Yahia

+0

@Product est une chaîne de caractères \ NvarChar et une chaîne de caractères connection = "Source de données =. \\ SQLEXPRESS; AttachDbFilename = C: \\ KianiWorkShopDB \\ Kiani.mdf; instance d'utilisateur = True; Integrated Security = True;"; mon verison SQL Server est 2008, au sujet de votre premier qusetion je le contrôle et vous dis –

+0

MS SQL Server prend en charge UTF-8 par défaut lorsque vous créez une nouvelle base de données. Vous pouvez utiliser le type de données nvarchar pour stocker les données Unicode. http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/73e930a8-ed50-486d-b5c1-604443f8365f –

Répondre

0

Essayez de créer votre paramètre avec SqlDbType égal à SqlDbType.NVarChar:

SqlParameter parameter = new SqlParameter(); 
parameter.ParameterName = "@Product"; 
parameter.SqlDbType = SqlDbType.NVarChar; 
parameter.Direction = ParameterDirection.Input; 
parameter.Value = "بطری"; 
Questions connexes