这是我的代码:
static void Main(string[] args)
{
SqlConnection _sqlConnection = new SqlConnection (@"Data Source=(local)\SQLEXPRESS;Integrated Security=SSPI;" + "Initial Catalog=OnlineBanking");
_sqlConnection.Open();
var cmdSelect = new SqlCommand("Select * from BankAccounts where AccountId = 1", _sqlConnection);
using (SqlDataReader dataReader = cmdSelect.ExecuteReader())
{
if (dataReader.HasRows)
{
dataReader.Read();
float AccountBalance = (float)dataReader["Balance"];
Console.WriteLine("{0}", AccountBalance);
}
}
这一行
float AccountBalance = (float)dataReader["Balance"];
导致问题,因为dataReader返回空。我该如何解决?问题是什么?
答案 0 :(得分:0)
System.InvalidCastException
(评论)不是"空" - 这是一个无效的演员。因此,大概数据不是float
;可能是double
,或 - 我怀疑情况如此:decimal
。请注意,对于代表金钱的数字,decimal
是 更好的选择。
所以:找出它是什么,并使用正确的演员阵容。我怀疑这会奏效:
decimal accountBalance = (decimal)dataReader["Balance"];
Console.WriteLine("{0}", accountBalance);
您还可以使用Convert
上的各种方法更宽容,即
decimal accountBalance = Convert.ToDecimal(dataReader["Balance"]);