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)

 

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