Asp.net Can';t在nvarchar列中存储其他语言数据
我正在使用SQLServer2008。 这是我的表定义Asp.net Can';t在nvarchar列中存储其他语言数据,asp.net,sql-server,nvarchar,Asp.net,Sql Server,Nvarchar,我正在使用SQLServer2008。 这是我的表定义 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 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.NETWeb应用程序发送数据,在这个应用程序中我使用了这种语法
public void myProcCall()
{
dbcommand = db.GetStoredProcCommand("myProc", nid, content);
ds = db.ExecuteDataSet(dbcommand);
}
因此,当我从web应用程序发送其他语言内容时,该值将更新为??????????。我是否必须对我的asp.net代码进行一些更改。这将起作用
EXEC myProc 1, N'हिं में पदी रीक्षण'
这不会
EXEC myProc 1, 'हिं में पदी रीक्षण'
因此,参数以非unicode的形式发送
您需要确保填充参数的代码发送unicode,您可以存储任何语言。您可以存储任何UTF16字符。但是MySQL没有nvarchar。如果无法使其在SQL Server中工作,那是因为未发送Unicode字符串或字段不是Unicode。无论加载的文本是什么,stringShow都会显示调用proc.BTW
nvarchar(max)
的代码是针对可以增长到2GB的blob的,而不是普通的textPost调用存储过程的代码。这就是将Unicode转换为ASCII并破坏数据的原因updatemytable set content=N'+@content,其中nid=@nid代码>是没有意义的。首先,它在一个空字符串前面加上前缀。第二个N'whatever'
用于字符串文本。nvarchar
参数已知为nvarchar,它不需要任何前缀。无论调用什么,存储过程都会在文本到达服务器之前损坏文本