SqlDataReader返回空

时间:2018-01-12 13:57:14

标签: c# .net sql-server

这是我的代码:

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返回空。我该如何解决?问题是什么?

1 个答案:

答案 0 :(得分:0)

System.InvalidCastException(评论)不是"空" - 这是一个无效的演员。因此,大概数据不是float ;可能是double,或 - 我怀疑情况如此:decimal。请注意,对于代表金钱的数字,decimal 更好的选择。

所以:找出它是什么,并使用正确的演员阵容。我怀疑这会奏效:

decimal accountBalance = (decimal)dataReader["Balance"];
Console.WriteLine("{0}", accountBalance);

您还可以使用Convert上的各种方法更宽容,即

decimal accountBalance = Convert.ToDecimal(dataReader["Balance"]);