C# 国际化和参数化查询

C# 国际化和参数化查询,c#,internationalization,datatable,dataset,C#,Internationalization,Datatable,Dataset,我用C语言制作了一个数据集和数据表# 然后为SQLServerDB生成一个报告(我使用ReportViewer)。 我需要在数据库中搜索值字段 当我的价值观是像“测试”一样的英语时,一切都很好, 但当我的值为阿拉伯语\波斯语\波斯语时,报表查看器不会显示任何内容 我的问题是: SELECT DetailsProducts.DarSad, Materials.Material, Products.Product FROM DetailsProducts INNER JOIN Materia

我用C语言制作了一个数据集和数据表# 然后为SQLServerDB生成一个报告(我使用ReportViewer)。 我需要在数据库中搜索值字段 当我的价值观是像“测试”一样的英语时,一切都很好, 但当我的值为阿拉伯语\波斯语\波斯语时,报表查看器不会显示任何内容

我的问题是:

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'”不起作用。如何修复此问题?

尝试使用
SqlDbType
等于
SqlDbType.NVarChar
创建参数:

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

DB/列是否为UTF8?什么类型的产品是
@Product
?使用的连接字符串是什么?这是什么版本的SQL Server?@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,关于您的第一个问题,我控制它并告诉您,当您创建新数据库时,SQL Server默认支持UTF-8。可以使用nvarchar数据类型存储unicode数据。我知道它支持UTF8,但取决于版本,它有一些微妙的怪癖(在V2008中稍微少一点)。。。与你描述的答案下面应该工作。。。你试过了吗?