DataTable字段長度MaxLength中英文長度問題

 

dtsSource.Table.Columns["出貨類型"].ReadOnly = false;
row.出貨類型 = "中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文";
declare @char varchar(4)
declare @nvarchar nvarchar(4)

Set @char = '@'
Set @nvarchar = '@'

select @char as charString, 
LEN(@char) as charStringLength,
DATALENGTH(@char) as charStringDataLength

select @nvarchar as nvarcharString, 
LEN(@nvarchar) as nvarcharStringLength,
DATALENGTH(@nvarchar) as nvarcharStringDataLength

declare @varchar nvarchar(6)

set @varchar = 'ǿ'

select @varchar as VarcharString, len(@varchar) as VarcharStringLength, DATALENGTH(@varchar) as VarcharStringDataLength

declare @varchar2 varchar(6)

set @varchar2 = N'Ø'

select @varchar2 as VarcharString, len(@varchar) as VarcharStringLength, DATALENGTH(@varchar) as VarcharStringDataLength
charString    charStringLength    charStringDataLength
@    1    1
nvarcharString    nvarcharStringLength    nvarcharStringDataLength
@    1    2
VarcharString    VarcharStringLength    VarcharStringDataLength
?    1    2
VarcharString    VarcharStringLength    VarcharStringDataLength
?    1    2

varchar 按字節長度,nvarchar按雙字節長度計算

在我的數據庫中 字段 寬度設置:32 varchar ,當超過16箇中文字符時,開始報錯。強類型DataSet數據字段屬性MaxLength需要減半.推薦用nvarchar.

“System.ArgumentException”類型的未經處理的異常在 System.Data.dll 中發生

其他信息: 無法設置列“出貨類型”。此值違反了此列的 MaxLength 限制。

   在 System.Data.DataColumn.CheckMaxLength(DataRow dr)
   在 System.Data.DataTable.RaiseRowChanging(DataRowChangeEventArgs args, DataRow eRow, DataRowAction eAction, Boolean fireEvent)
   在 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean suppressEnsurePropertyChanged, Int32 position, Boolean fireEvent, Exception& deferredException)
   在 System.Data.DataTable.InsertRow(DataRow row, Int64 proposedID, Int32 pos, Boolean fireEvent)
   在 System.Data.DataRowCollection.Add(DataRow row)
   在 DataModal.DataSet_XSJL.TableDataTable.AddTableRow(TableRow row) 位置 C:\Users\bosd\documents\visual studio 2015\Projects\ChiFengAnTu_DataSyncTools\DataModal\DataSet_XSJL.Designer.cs:行號 507
   在 DataAccess.DataUtil.syncXSJL(String strConnSource, String strConnDestination) 位置 C:\Users\bosd\documents\visual studio 2015\Projects\ChiFengAnTu_DataSyncTools\DataAccess\DataUtil.cs:行號 26
   在 ChiFengAnTu_DataSyncTools.Form1.Form1_Load(Object sender, EventArgs e) 位置 C:\Users\bosd\documents\visual studio 2015\Projects\ChiFengAnTu_DataSyncTools\ChiFengAnTu_DataSyncTools\Form1.cs:行號 24
   在 System.Windows.Forms.Form.OnLoad(EventArgs e)
   在 System.Windows.Forms.Form.OnCreateControl()
   在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   在 System.Windows.Forms.Control.CreateControl()
   在 System.Windows.Forms.Control.WmShowWindow(Message& m)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.Form.WmShowWindow(Message& m)
   在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章