使用NCHAR在C#中获取特殊字符

时间:2015-05-26 13:33:17

标签: c# sql-server-ce

我正在我的应用程序中实现一个SQL Server CE数据库,并尝试将一些SQL查询转换为代码。我有这样的声明:

INSERT INTO Unit (unitTypeID, label) VALUES (@unitTypeID, 'm/s' + NCHAR(0x00B2));

我在C#中的代码如下所示:

            string value = @"'m/s' + NCHAR(0x00B2)";
            cmdString = "INSERT INTO Unit (unitTypeID, label) VALUES (@guid, @value)";
            cmd = new SqlCeCommand(cmdString, connection);
            cmd.Parameters.Add("@guid", guid).SqlDbType = SqlDbType.UniqueIdentifier;
            cmd.Parameters.Add("@value", value).SqlDbType = SqlDbType.NText;
            cmd.ExecuteNonQuery();

NCHAR(0x00B2)是上标2.如何在C#中复制此功能? 我宁愿不将²粘贴到代码中,因为我在这个数据库中使用了几个特殊字符。

1 个答案:

答案 0 :(得分:3)

您不能将表达式作为参数传递 - 只有值(事实上,这是首先使用参数化查询的一个重要原因)。所以你真的传递了字符串'''m/s'' + NCHAR(0x00B2)' - 与你想要做的完全不同。

处理此问题的一种方法是在字符串中使用转义字符:"m/s\u00B2"

为了提高可读性,我建议将这些特殊字符保留为常量,例如:

/// <summary>Superscript two ("²").</summary>
const string SuperscriptTwo = "\u00B2";

...
  var val = "m/s" + SuperscriptTwo;
...