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として定義することです。