C# 使用C从Oracle数据库返回Int值#
我试图使用C#从Oracle数据库返回C# 使用C从Oracle数据库返回Int值#,c#,database,oracle,C#,Database,Oracle,我试图使用C#从Oracle数据库返回INTEGER值,但它给了我以下异常 发生类型为“System.InvalidCastException”的未处理异常 在System.Data.dll中 其他信息:指定的强制转换无效 有人能帮我解决这个问题吗 这是我的密码: OleDbConnection con = new OleDbConnection( "Provider=MSDAORA;Data Source=xe;User ID=hr; password=123"); con.Open
INTEGER
值,但它给了我以下异常
发生类型为“System.InvalidCastException”的未处理异常
在System.Data.dll中
其他信息:指定的强制转换无效
有人能帮我解决这个问题吗
这是我的密码:
OleDbConnection con = new OleDbConnection(
"Provider=MSDAORA;Data Source=xe;User ID=hr; password=123");
con.Open();
String cmd1 =
@"select retail_price,purchase_price from
productdetails where item_name='" + textBox1.Text + "'";
OleDbCommand a1 = new OleDbCommand(cmd1, con);
OleDbDataReader myReader = a1.ExecuteReader();
if (myReader.Read())
{
int m = myReader.GetInt32(0);
MessageBox.Show("" +m);
}
发生的原因有两个 首先,您的价格字段可能是十进制的。接下来,在访问读卡器上的字段时,可能需要更加明确 尝试:-
首先,根据查询
select retail_price,
purchase_price
from productdetails
where item_name = :item_name
零售价格
和购买价格
的实际类型可以是一些浮点值类型(双精度
或十进制
;例如,8.95$==8.95
):
如果您坚持使用整数,请将其四舍五入(8.95$==8.95->9
);假设价格为非负:
尝试
intm=Convert.ToInt32(myReader[0])
istead ofint m=myReader.GetInt32(0)代码>您可能希望阅读。MicrosoftMSDAORA
提供程序已过时多年。使用Oracle providerOraOLEDB.Oracle
@mjwills我无法获取您想要告诉的内容。你能解释一下吗?我建议读一读或。
select retail_price,
purchase_price
from productdetails
where item_name = :item_name
decimal retail_price = Convert.ToDecimal(myReader[0]);
decimal purchase_price = Convert.ToDecimal(myReader[1]);
int retail_price = (int) (Convert.ToDouble(myReader[0]) + 0.5);
int purchase_price = (int) (Convert.ToDouble(myReader[1]) + 0.5);