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

本文关键字:Unicode 字符 插入 存储过程 SQL Server 通过 | 更新日期: 2023-09-27 18:27:43

我有一个类似下面的代码,它调用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);

但是数据被插入为????即使表列是CCD_ 1;

我尝试在传递到存储过程之前添加"N",以及下面的。但还是一样。这样做的最佳方式是什么?

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

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

在转到Sp 之前,我尝试添加"N"

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

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

你做得对。不需要传递任何其他信息。

但是数据被插入为????

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