SQL Server插入或修改數據是中文亂碼的問題


SQL Server中亂碼解決方案:

在Sql Server2005英文版中,如果未對Varchar類型的字段進行設置,那么很多朋友會發現向數據庫中插入記錄時,如果對應的varchar類型字段 的值為中文,會出現亂碼的情況。解決辦法:使用nvarchar類型,並在插入值前加N,例如:insert into tableA (a) values(N'中文')。

 

如果確實要使用varchar類型的話,可以這樣做:
1.

安裝時不要選 Hide advice configuration  options

然后再 Collation designator and order  中選擇 Chinese_PRC 就可以了。

2:

在建表時指明某個字段的語言

方法 COLLATE Chinese_PRC_CS_AS_WS

示例:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM