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

简介:

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

insert into news_info(info_title,info_content) values('标题','内容')

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

alter  database  databaseName  collate Chinese_PRC_CI_AS

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

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

insert into news_info(info_title,info_content) values(N'标题',N'内容')

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

复制代码
  public static bool AddNews(string title, string content)//添加新闻
        {
            String strsql = "Insert into news_info(info_title,info_content,info_addtime,info_isshow,info_chinese) Values(@info_title,@info_content,@info_addtime,@info_isshow,@info_chinese)";
            SqlParameter[] paras = new SqlParameter[5];
            paras[0] = new SqlParameter("@info_title", SqlDbType.VarChar);
            paras[0].Value = title;
            paras[1] = new SqlParameter("@info_content", SqlDbType.VarChar);
            paras[1].Value = content;
            paras[2] = new SqlParameter("@info_addtime", SqlDbType.DateTime);
            paras[2].Value = System.DateTime.Now;
            paras[3] = new SqlParameter("@info_isshow", SqlDbType.Int);
            paras[3].Value = 0;
            paras[4] = new SqlParameter("@info_chinese", SqlDbType.Int);
            paras[4].Value = 1;
            if (NewsDB.Getcmd(strsql, paras))
            {
                return true;
            }
            return false;
        }
复制代码

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

           paras[0] = new SqlParameter("@info_title", SqlDbType.NVarChar);
            paras[0].Value = title;
            paras[1] = new SqlParameter("@info_content", SqlDbType.NVarChar);
            paras[1].Value = content;

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

 

 





本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2010/05/20/2297141.html,如需转载请自行联系原作者


目录
相关文章
|
4月前
|
SQL Oracle 关系型数据库
SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语
SELECT INTO 语句将数据从一个表复制到一个新表中。
62 1
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
51 0
|
SQL 时序数据库
Influx Sql系列教程六:insert 修改数据
在influxdb中没有专门的修改数据的update语句,对于influxdb而言,如果想修改数据,还是得使用我们前面的说到的insert来实现,那么怎么判断一条insert语句是插入还是修改呢?
662 0
|
1月前
|
SQL 存储 关系型数据库
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
|
27天前
|
SQL 关系型数据库 MySQL
SQL INSERT INTO order_record SELECT * FROM 从一张表查出数据插入到另一张表
SQL INSERT INTO order_record SELECT * FROM 从一张表查出数据插入到另一张表
14 0
|
4月前
|
SQL 数据库
SQL INSERT INTO 语句详解:插入新记录、多行插入和自增字段
SQL INSERT INTO 语句用于在表中插入新记录。
203 0
|
8月前
|
SQL 数据库
拷贝的表的SQL语句 SELECT INTO 和 INSERT INTO SELECT的用法与区别
语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1
99 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
插入数据、阻止对某几列插入的实现、复制表的定义和数据以及注意事项、比创建约束功能更强大!用 WITH CHECK OPTION限制数据录入、如何一个insert将数据同时插入多个表【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。但是!ORA - 01723 : 不允许长度为 0 的列。
【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
Zp
|
SQL Oracle 关系型数据库
Oracle sql 批量插入 Insert all into
Oracle sql 批量插入 Insert all into
Zp
289 0
|
SQL 监控 关系型数据库
问题整理:ZABBIX4.0登录界面出现错误 SQL statement execution has failed “INSERT INTO sessions (sessionid,userid,..
问题整理:ZABBIX4.0登录界面出现错误 SQL statement execution has failed “INSERT INTO sessions (sessionid,userid,..
291 0
问题整理:ZABBIX4.0登录界面出现错误 SQL statement execution has failed “INSERT INTO sessions (sessionid,userid,..