1

AS /400DB2テーブルにテーブルがあります。

SCDSC VARCHAR(120) CCSID 1208 DEFAULT NULL ,

CCSID1208はUTF-8を意味します。

私のc#コードでは、これが機能する定義です。

cmd.Parameters.Add("scdsc", OleDbType.VarChar  , 120);

私はVarWCharタイプでも試しました:

cmd.Parameters.Add("scdsc", OleDbType.VarWChar  , 120);

問題は、このフィールドが取得する最大文字数が60文字であることです。フィールドで60文字の長さで動作させることはできません。

それを機能させるために、フィールドの実際の長さを2倍にする必要があるのは奇妙だと思います(すべての文字列フィールドに対してそれを行いました)。

更新:正しい実装は、DBのフィールドをnvarcharとして定義し、oledbtypeをvarWcharとして定義することです。

4

1 に答える 1

1

列をnvarcharとして定義する必要があります。varchar 120を定義しています。これは、必要な240バイトではなく、120バイトしか保持できないことを意味します。

varcharタイプは、非Unicode、1byte=1文字列用です。

于 2012-12-08T10:40:47.847 に答える