我在AS / 400 DB2表中有一个表:
SCDSC VARCHAR(120) CCSID 1208 DEFAULT NULL ,
CCSID 1208意味着UTF-8。
在我的c#代码中,这是有效的定义。
cmd.Parameters.Add("scdsc", OleDbType.VarChar , 120);
我也尝试使用VarWChar类型:
cmd.Parameters.Add("scdsc", OleDbType.VarWChar , 120);
问题是该字段获得的最大值为60个字符。我不能让它在现场使用60个字符长度。
我发现奇怪的是我需要将字段的真实长度加倍(我为所有字符串字段做了)才能使其正常工作。
UPDATE:正确的实现是将DB中的字段定义为nvarchar,将oledbtype定义为varWchar。
答案 0 :(得分:1)
您应该将列定义为nvarchar。您正在定义varchar 120,这意味着它只能容纳120个字节,而不是所需的240个字节。
varchar类型用于非unicode,1byte = 1个字符串。