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