你好,我正在尝试连接Oracle,并将参数作为存储过程的一部分发送。我的两个参数是空字符串,所以我需要传递null值,但数据类型在db端设置为number。当我运行脚本的时候,它给我的错误是“对象不能从DBNull转换为其他类型”。
这是我的代码片段记住字符串的大小写,字符串SRE_Pricing是以"“.So形式出现的,如果文本中有像"52”和"“这样的字符串,我需要将其转换为null。
OracleParameter CaseParam = new OracleParameter("arg_CASE_NUMBER", OracleType.Number);
CaseParam.Direction = ParameterDirection.Input;
if (Case != null || Case!="")
{
CaseParam.Value = Convert.ToInt32((Case.Equals(string.Empty)) ? (object)DBNull.Value : Case);
}
else
{
CaseParam.Value = DBNull.Value;
}
//CaseParam.Value =Convert.ToInt32(Case);
cmd.Parameters.Add(CaseParam);
OracleParameter SRE_pricingParam = new OracleParameter("arg_SRE_PRICING_ELEMENT", OracleType.Number);
SRE_pricingParam.Direction = ParameterDirection.Input;
if (SRE_Pricing != null || SRE_Pricing != "")
{
SRE_pricingParam.Value = Convert.ToInt32((SRE_Pricing.Equals(string.Empty)) ? (object)DBNull.Value : SRE_Pricing);
}
else
{
SRE_pricingParam.Value = DBNull.Value;
}
//SRE_pricingParam.Value = Convert.ToInt32(SRE_Pricing);
cmd.Parameters.Add(SRE_pricingParam);发布于 2018-06-13 21:38:16
您需要在if条件中使用&&运算符而不是||
if (SRE_Pricing != null && SRE_Pricing != "")
{
SRE_pricingParam.Value = Convert.ToInt32(SRE_Pricing);
}
else
{
SRE_pricingParam.Value = DBNull.Value;
}最好使用Int32.TryParse()
int price;
if (Int32.TryParse(SRE_Pricing, out price))
{
SRE_pricingParam.Value = price;
}
else
{
SRE_pricingParam.Value = DBNull.Value;
}https://stackoverflow.com/questions/50838591
复制相似问题