SQL Server中乱码解决方案:html
在Sql Server2005英文版中,若是未对Varchar类型的字段进行设置,那么不少朋友会发现向数据库中插入记录时,若是对应的varchar类型字段 的值为中文,会出现乱码的状况。解决办法:使用nvarchar类型,并在插入值前加N,例如:insert into tableA (a) values(N'中文')。sql
若是确实要使用varchar类型的话,能够这样作:
1.数据库
安装时不要选 Hide advice configuration optionside
而后再 Collation designator and order 中选择 Chinese_PRC 就能够了。spa
2:.net
在建表时指明某个字段的语言设计
方法 COLLATE Chinese_PRC_CS_AS_WShtm
示例:blog
create table test
(
a varchar(255) COLLATE Chinese_PRC_CS_AS_WS NULL,
b varchar(255) COLLATE sql_latin1_general_cp1_ci_as NULL
)
insert test values('中文','中文')排序
插入后 字段 a 为 中文 ,b 为 ??
如果使用存储过程插入数据的话,须要将对应的参数类型改成nvarchar。
示例:
create PROCEDURE [dbo].[export_Create]
@C_HM nvarchar(128)
AS
INSERT INTO export
([C_CCH])
values
(@C_HM)
在表格中,C_CCH为varchar类型。
同时在调用存储过程的.net代码中,也须要将对应的参数类型选为:System.Data.SqlDbType.NVarChar。
示例:
Database.MakeInParam("@C_HM",System.Data.SqlDbType.NVarChar,128,guanTongInfo.CHM)。(Database.MakeInParam为DataAccess2.0组件的方法)
方案二:
在设计器里更改有时会出现:
Msg 5030, Level 16, State 2, Line 1
没法用排他锁锁定该数据库,以执行该操做。
Msg 5072, Level 16, State 1, Line 1
ALTER DATABASE 失败。没法将数据库 'databasename' 的默认排序规则设置为 Chinese_PRC_CI_AS。
脚本更改方法:
ALTER DATABASE dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE dbname COLLATE CHINESE_PRC_CI_AS;
GO
ALTER DATABASE dbname SET MULTI_USER;
GO
原文地址:http://www.cnblogs.com/KingStar/archive/2010/06/11/1756305.html