从Oracle获得空结果,即使实际结果是十进制值
我是Visual Studio中的Oracle新手, 我使用Oracle.ManagedDataAccess作为参考, 在Oracle查询中,每当我试图从算术中检索十进制值时,它总是返回null e、 g从Oracle获得空结果,即使实际结果是十进制值,oracle,visual-studio,Oracle,Visual Studio,我是Visual Studio中的Oracle新手, 我使用Oracle.ManagedDataAccess作为参考, 在Oracle查询中,每当我试图从算术中检索十进制值时,它总是返回null e、 g 从DUAL中选择26/3,您的数据类型似乎与任何if表达式都不匹配。由于没有默认分支,itemData[i]保持为空。我建议采用以下方法来找出差距: for (int i = 0; i < data.FieldCount; i++) { Type type = data.GetVal
从DUAL中选择26/3,您的数据类型似乎与任何if表达式都不匹配。由于没有默认分支,itemData[i]保持为空。我建议采用以下方法来找出差距:
for (int i = 0; i < data.FieldCount; i++)
{
Type type = data.GetValue(i).GetType();
switch(type)
{
case typeof(string):
itemData[i] = data.GetString(i);
break;
case typeof(DateTime):
itemData[i] = data.GetDateTime(i);
break;
case typeof(int):
itemData[i] = data.GetInt32(i);
break;
case typeof(decimal):
itemData[i] = data.GetDecimal(i);
break;
case typeof(bool):
itemData[i] = data.GetBoolean(i);
break;
case typeof(TimeSpan):
itemData[i] = data.GetTimeSpan(i);
break;
case typeof(Single):
itemData[i] = Convert.ToDecimal(data.GetOracleDecimal(i).ToString());
break;
default:
MessageBox.Show("Unknown type " + type.Name);
break;
}
}
因此,我得到了编辑oracle查询的建议 来自。 从双模式中选择26/7 到 从双功能菜单中选择26/7 是的,它是有效的
但是,我仍然不知道为什么感谢您的响应,但是即使在data.GetValuei这一步中也出现了错误,因此代码甚至无法进一步运行。你说从DUAL returns null中选择26/3。我不知道已经是您的data.GetValuei返回null。我认为这个方法在这种情况下总是会返回一个对象DBNull。对不起,那我就不知道了。
for (int i = 0; i < data.FieldCount; i++)
{
Type type = data.GetValue(i).GetType();
switch(type)
{
case typeof(string):
itemData[i] = data.GetString(i);
break;
case typeof(DateTime):
itemData[i] = data.GetDateTime(i);
break;
case typeof(int):
itemData[i] = data.GetInt32(i);
break;
case typeof(decimal):
itemData[i] = data.GetDecimal(i);
break;
case typeof(bool):
itemData[i] = data.GetBoolean(i);
break;
case typeof(TimeSpan):
itemData[i] = data.GetTimeSpan(i);
break;
case typeof(Single):
itemData[i] = Convert.ToDecimal(data.GetOracleDecimal(i).ToString());
break;
default:
MessageBox.Show("Unknown type " + type.Name);
break;
}
}