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 语句将数据从一个表复制到一个新表中。
80 1
|
4月前
|
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
105 0
|
23天前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
3月前
|
SQL 数据库
SQL INSERT INTO SELECT 语句
SQL INSERT INTO SELECT 语句
48 8
|
6天前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
14 1
|
30天前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
20 5
|
1月前
|
SQL 关系型数据库 BI
关系型数据库SQL server INSERT 语句
【8月更文挑战第3天】
44 9
|
2月前
|
SQL 数据库
SQL INSERT INTO 语句
【7月更文挑战第12天】SQL INSERT INTO 语句。
70 12
|
4月前
|
SQL 存储 关系型数据库
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
|
2月前
|
SQL 数据库
SQL INSERT INTO 语句
【7月更文挑战第11天】SQL INSERT INTO 语句。
37 2
下一篇
DDNS