通过SQL Server存储过程插入Unicode字符

时间:2013-08-15 12:34:34

标签: c# sql-server unicode

我有一个类似下面的代码调用SQL Server存储过程

名字将传递像电子邮箱

这样的值
sCmd.Parameters.Add("@FName", SqlDbType.NVarChar);
sCmd.Parameters.Add("@LName", SqlDbType.NVarChar);

sCmd.Parameters["@FName"].Value = firstname;
sCmd.Parameters["@LName"].Value = lastname;

在存储过程中:

@FName nvarchar(200),
@LName nvarchar(200)

INSERT INTO [dbo].[testunicode]
       ([col1]
       ,[col2])
VALUES
       (@FName
       ,@LName);

但数据插入为????甚至表格列都是NVarchar(max);

我尝试在传递给存储过程之前添加'N',以及下面的内容。但仍然是一样的。这样做的最佳方式是什么?

  Encoding tc = Encoding.GetEncoding("BIG5");
  byte[] bytes = tc.GetBytes(firstname);
  firstname = Encoding.Unicode.GetString(bytes)

1 个答案:

答案 0 :(得分:0)

  

我尝试添加N' N'在传递给Sp之前

没有必要,因为.NET String支持Unicode,它将负责Unicode。如果您看到传递给数据库的请求,您会发现 N' 会自动附加。

  

这样做的最佳方式是什么。

你做得对。无需传递任何其他内容。

  

但数据插入为????

检查表格中的数据类型。它真的是NVarChar吗?