SQL Server插入或修改数据是中文乱码的问题

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

相关文章
相关标签/搜索