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

相關文章
相關標籤/搜索