无法在nvarchar列中存储其他语言数据

时间:2018-02-06 13:08:38

标签: asp.net sql-server nvarchar

我正在使用SQL Server 2008。 这是我的表定义。

create table myTable (nid int identity(1,1),content nvarchar(max));

当我执行这两个查询时

insert into myTable(content)values(N'हिंदी में परीक्षण');
update myTable set content=N'हिंदी में परीक्षण' where nid=1;

在表格中插入/更新其他语言数据。我想在存储过程中执行相同的操作。这是我的存储过程的定义。

create proc myProc
@nid int,
@content nvarchar(max)
as
begin
  update myTable set content=@content where nid=@nid;
end

它只是不起作用列更新了?????????????值。我该怎么办。我试着这样做

update myTable set content=N''+@content where nid=@nid;

但这不起作用。请帮助。

我忘记了一件事

exec myProc 1,N'हिंदी में परीक्षण'

这确实有效当然问题是我从asp .net web应用程序发送数据,我使用这种语法。

public void myProcCall()
    {
        dbcommand = db.GetStoredProcCommand("myProc", nid, content);
        ds = db.ExecuteDataSet(dbcommand);
    }

因此,当我从Web应用程序发送其他语言内容时,该值将更新为??????????。我是否必须在我的asp .net代码中进行一些更改。

1 个答案:

答案 0 :(得分:1)

这将有效

EXEC myProc 1, N'हिं में पदी रीक्षण'

这不会

EXEC myProc 1, 'हिं में पदी रीक्षण'

Ergo,参数以非unicode

的形式发送

您需要确保填充参数的代码发送unicode