ahmed salah

ahmed salah

  • 1.6k
  • 530
  • 121.9k

Input string not in correct formate when query return null t

Mar 12 2018 6:19 PM
Problem
 
when convert null to decimal i get error input string not in correct format
 
how to solve it
  1. public static object ExecuteScalar(string sql, DbParameter[] @params = null)  
  2. {  
  3. if (sql == ""return "";  
  4. object result = null;  
  5. lock (synObj)  
  6. {  
  7. sql = AnalyizeBooleanFields(sql);  
  8. cmd.CommandText = sql;  
  9. cmd.Parameters.Clear();  
  10. if (@params != null)  
  11. {  
  12. for (int i = 0; i < @params.Length; i++)  
  13. {  
  14. cmd.Parameters.Add(@params[i]);  
  15. }  
  16. }  
  17. if (Connection.State != ConnectionState.Open)  
  18. Connection.Open();  
  19. if (WithTransaction)  
  20. cmd.Transaction = _transaction;  
  21. result = cmd.ExecuteScalar();  
  22. if (!WithTransaction)  
  23. Connection.Close();  
  24. }  
  25. return (result == null || result == DBNull.Value) ? "" : result;  
  26. }  
  27. private decimal GetLastReading(string UnitCode, string Year, string Month)  
  28. {  
  29. string sqlquery = "";  
  30. if (txtMonth.Text == "1")  
  31. {  
  32. sqlquery = "select CurrentMeterReading from WAHInvoice where UnitCode=" + UnitCode + " and Month = 12 And Year =" + (Convert.ToInt32(Year) - 1).ToString() + "";  
  33. }  
  34. else  
  35. {  
  36. sqlquery = "select CurrentMeterReading from WAHInvoice where UnitCode='" + UnitCode + "' and Month = '" + (Convert.ToInt32(Month) - 1).ToString() + "' And Year ='" + Year + "'";  
  37. }  
  38. return ConvertToDecimal(DataAccess.ExecuteScalar(sqlquery));  
  39. }  
when call i do as following
  1. decimal LastMeterReading = GetLastReading(dt.Rows[i]["UnitCode"].ToString(), txtYear.Text, txtMonth.Text).ToString();  
Now if sqlquery not return any row it give me exception from function GetLastReading
Input string not in correct format when query return null to decimal value .
so that how to avoid this error please.

Answers (1)