带有CCSID 1208(UTF-8)和oledbtype问题的DB2 / 400字段

时间:2012-12-08 10:25:30

标签: c# .net unicode db2 oledbconnection

我在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。

1 个答案:

答案 0 :(得分:1)

您应该将列定义为nvarchar。您正在定义varchar 120,这意味着它只能容纳120个字节,而不是所需的240个字节。

varchar类型用于非unicode,1byte = 1个字符串。