1

我有一个像下面这样调用 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)
4

1 回答 1

0

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

不需要,因为 .NET 字符串支持 Unicode,它会处理 Unicode。如果您看到传递到数据库的请求,您会注意到N'将被自动附加。

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

你做得对。不需要传递其他任何东西。

但是数据插入为????

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

于 2013-08-15T12:47:15.200 回答