zoukankan      html  css  js  c++  java
  • MSSQL中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
    欢迎任何形式的转载,但请务必注明出处。
    分享到:
  • 相关阅读:
    .Net操作Sharepoint常用方法(1) 判断List或Library是否存在
    Aspose.Cells读取Excel获取DataTable方法
    Nginx系统学习笔记(1)Say Hello
    老刘Hadoop学习笔记(6)Hadoop 单机模式 伪分布式 完全分布式区别
    老刘Hadoop学习笔记(5)安装JDK
    老刘Hadoop学习笔记(4)JDK和Open JDK区别
    老刘Hadoop学习笔记(3)新建用户及用户组
    老刘Hadoop学习笔记(2)修改虚拟机hostname及hosts文件
    老刘Hadoop学习笔记(1)开始学习
    MySQL中变量为空时不执行where过滤
  • 原文地址:https://www.cnblogs.com/xwdreamer/p/2297141.html
Copyright © 2011-2022 走看看