我有一个使用Oracle作为数据库的Web应用程序。我有一个查询,它返回前端的数字,我需要插入到文本框中。
当返回的数字是整数时,文本框会被填充但当返回的数字是小数时,会抛出错误“指定的强制转换无效。”
这是代码。
? string:LONDON ?--> LOCATION NAME
我错过了什么吗?
答案 0 :(得分:1)
希望txtRating.Text =dr["AVERAGE"].ToString();
导致错误,这不是因为您指定的decimal
到string
投射。这可能是由于dr["AVERAGE"]
为null
,因此null.ToString()
会在此处显示错误:您可以使用:
txtRating.Text = dr["AVERAGE"] == null || dr["AVERAGE"] is DBNull ? "" : dr["AVERAGE"].ToString();
答案 1 :(得分:1)
代码没有问题,但dr["AVERAGE"]
不应该为空。
否则你会得到Object reference error
答案 2 :(得分:0)
我发现了问题的问题。正在计算的我的平均值在某些情况下最终会成为非经常性的价值并且不会结束。因此,在施法时曾经有过错误。
我在查询中使用TO_CHAR函数解决了它。
string sql = "SELECT distinct B.TITLE,B.BOOK_CATEGORY,B.ISBN,A.AUTHOR_NAME,P.PUBLICATION_HOUSE_NAME,B.YEAR_OF_PUBLICATION,(SELECT TO_CHAR((AVG(AVERAGE_RATING)),'99.99') FROM RATING_TABLE GROUP BY ISBN HAVING ISBN = '" + isbn + "') AS AVERAGE from BOOK_TABLE B JOIN AUTHOR_TABLE A ON B.AUTHOR_ID = A.AUTHOR_ID JOIN PUBLISHER_TABLE P ON B.PUBLISHER_ID = P.PUBLISHER_ID JOIN RATING_TABLE R ON B.ISBN = R.ISBN WHERE B.ISBN = '" + isbn + "'";
答案 3 :(得分:-3)
在PLSQL Casting中
SELECT CAST (null AS DOUBLE PRECISION) From dual;
SELECT CAST ('100.233' AS DOUBLE PRECISION) From dual;
Select AVG( CAST(AVERAGE_RATING AS DOUBLE PRECISION)) FROM RATING_TABLE;
在C#中的OR
try
{
If(dr["AVERAGE"]!= null)
{
txtRating.Text = (!String.IsNullOrEmpty(dr["AVERAGE"].ToString()) ? Convert.ToDecimal(dr["AVERAGE"].ToString()) : 0);
}
}
catch{}