MS-SQL中Insert操作插入的中文变成问号"???"的解决办法

在新闻管理系统中,当数据库排序规则为SQL_Latin1_General_CP1_CI_AS时,若标题和内容的数据类型分别为nvarchar和ntext,会导致中文显示为???。通过将数据库排序规则更改为Chinese_PRC_CI_AS或在插入语句前加上N,即可解决此问题。同时,业务逻辑层也需要相应调整,将字符类型从VarChar改为VarNchar。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      编写的新闻管理系统添加新闻以后标题和内容都变成了"???",插入语句如下:

      在网上查了一下,这是因为我的标题和内容的数据类型分别为nvarchar和ntext,而我的数据库排序规则是"SQL_Latin1_General_CP1_CI_AS",只要将其改为"Chinese_PRC_CI_AS"就可以了。可以使用Sql server management studio改,也可以使用sql语句改。sql语句如下:

      但是我在该数据库排序规则的时候出现错误,错误信息:无法用排它锁锁定该数据库,alter database 操作失败。

 

      后来发现修改插入语句可以显示中文,就是在字符前面加上字母"N",插入语句如下:

      在业务逻辑层也需要进行一些修改,原先业务逻辑层的插入操作如下

将其中的SqlDbType.VarChar改为SqlDbType.NVarChar,修改代码如下:

修改完成以后再插入 中文就不会再显示问号了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值