1

我在 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 个字符的长度。

我觉得很奇怪,我需要将字段的真实长度加倍(我对所有字符串字段都这样做了)才能使其正常工作。

更新:正确的实现是将DB中的字段定义为nvarchar,将oledbtype定义为varWchar。

4

1 回答 1

1

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

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

于 2012-12-08T10:40:47.847 回答