微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB.net参数化查询使用sp_executesql但丢失了UTF8字符

如何解决VB.net参数化查询使用sp_executesql但丢失了UTF8字符

我有一个奇怪的情况,正在寻求澄清。

我目前有一个VB.net应用程序,正在使用ADO.net将下面的参数化查询发送到sql Server 2019数据库。为了使数据库支持UTF8,我们使用了新的_UTF8归类之一。对于此测试,我们使用的数据库配置为使用latin1_General_100_CI_AI_SC_UTF8。

查询

exec sp_executesql 
   N'UPDATE Roles SET Name = @pName WHERE Role_ID = 6',N'@pName varchar(1000)',@pName='æææDeveloper'

现在,我知道当我在MSsql Management Studio中运行以上查询时,我不会丢失'æ'字符,但是如果我通过代码运行此字符,我的字符将被替换为'?'。我的问题是为什么我会通过ADO.net而不是通过MSsql Management Studio通过代码丢失它们。

我也知道sp_executesql不支持将varchar作为参数,这是主要问题,我们能够解决,但又可以解决。为什么它可以在MSsql中工作,但不能在ADO.net中工作?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。