C#中使用NCHAR获取特殊字符
Using NCHAR to get special characters in C#
我正在我的应用程序中实现一个 SQL 服务器 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# 中复制此功能?
我不想将 ² 粘贴到代码中,因为我在此数据库中使用了几个特殊字符。
您不能将表达式作为参数传递 - 只能传递值(事实上,这是首先使用参数化查询的重要原因之一)。所以你实际上是在传递字符串 '''m/s'' + NCHAR(0x00B2)'
- 与你想要做的完全不同。
处理此问题的一种方法是在字符串中使用转义字符:"m/s\u00B2"
.
为了提高可读性,我建议将这些特殊字符保留为常量,例如:
/// <summary>Superscript two ("²").</summary>
const string SuperscriptTwo = "\u00B2";
...
var val = "m/s" + SuperscriptTwo;
...
我正在我的应用程序中实现一个 SQL 服务器 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# 中复制此功能? 我不想将 ² 粘贴到代码中,因为我在此数据库中使用了几个特殊字符。
您不能将表达式作为参数传递 - 只能传递值(事实上,这是首先使用参数化查询的重要原因之一)。所以你实际上是在传递字符串 '''m/s'' + NCHAR(0x00B2)'
- 与你想要做的完全不同。
处理此问题的一种方法是在字符串中使用转义字符:"m/s\u00B2"
.
为了提高可读性,我建议将这些特殊字符保留为常量,例如:
/// <summary>Superscript two ("²").</summary>
const string SuperscriptTwo = "\u00B2";
...
var val = "m/s" + SuperscriptTwo;
...