【问题标题】:Internationalization and parameterized queries国际化和参数化查询
【发布时间】:2011-10-10 09:04:30
【问题描述】:

我在 C# 中创建了一个 DataSet 和 DataTable 然后为 SQL Server 数据库制作报告(我使用报告查看器)。 我需要在数据库中搜索值字段 当我的价值是英语就像“测试”一样,一切都很好, 但是当我的值是 Arabic\Persian\Farsi 时,报表查看器不会向我显示任何内容。

我的查询是这样的:

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'”不起作用。我该如何解决这个问题?

【问题讨论】:

  • 数据库/列是 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; ";我的版本 SQL Server 是 2008 ,关于你的第一个问题,我控制它并告诉你
  • MS SQL Server 在创建新数据库时默认支持 UTF-8。您可以使用 nvarchar 数据类型来存储 unicode 数据。 social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/…
  • 我知道它支持 UTF8,但根据版本的不同,它有一些微妙的怪癖(V 2008 稍微少一点)......你描述了下面的答案应该可以工作......你试过了吗?

标签: c# internationalization datatable dataset


【解决方案1】:

尝试使用等于SqlDbType.NVarCharSqlDbType 创建您的参数:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多