Oracle的企业库dbcommand AddInParameter方法

时间:2012-06-14 11:50:36

标签: c# unicode oracle11g nvarchar

我的问题与这个问题非常相似 - Addin parameter for Oracle,除了我正在使用Oracle 11g。数据库有两个不同的字符集用于VARCHAR(Western European)NVARCHAR(Unicode)数据类型。

db.AddInParameter(cmd, "nationalColumn", DbType.String, "高野")

数据库中的国家字符集是unicode,因此NVARCHAR列可以保存这些字符。

我的问题是如何告诉db.AddInParameter函数我正在添加的参数是NVARCHAR而不是默认情况下假设的VARCHAR。

添加到此 - 我正在使用System.Data.OracleClient连接到数据库

3 个答案:

答案 0 :(得分:1)

您无法在西欧编码中对中文字符进行编码。此编码定义的字符数有限,不包含中文。

您期望得到什么输出?我希望数据可能会出现乱码或返回错误。

答案 1 :(得分:0)

您是自己指定参数还是让Enterprise Library尝试找出参数类型? 如果你打电话

command.AddInParameter(“parameterName”, value);

尝试调用该过程并让Enterprise Library找出参数,例如:

DB.ExecuteNonQuery(“PKG_USER.DELETE”, userId);

该过程需要一个名为INT的{​​{1}}参数,但该命令仅传递参数值。 EntLib使用参数顺序发送它们。

另外看看

答案 2 :(得分:0)

我正在回答我自己的问题,因为我花了一周时间搞清楚这个问题。 System.Data命名空间不理解它处理的列是国家列,除非它明确指定为OracleType.Nvarchar。

要解决上述情况,我必须覆盖AddInParameter函数以添加一个switch case,检查输入DBType是否为String并将其映射到OracleType.NVarchar。

HTH