ADO.NET请求没有从所有列返回数据

本文关键字:返回 数据 请求 ADO NET | 更新日期: 2023-09-27 18:11:25

使用VS2010和SQLEXPRESS进行一个小项目。

我输入了以下表格中的一些数据:

表字段

当我执行这个时:

using (SqlConnection conn = new SqlConnection(connString)) {
    conn.Open();
    SqlCommand cmd = new SqlCommand("SELECT * FROM ACCOUNTS", conn);
    using (SqlDataReader reader = cmd.ExecuteReader()) {
        while (reader.Read()) {
            accountList.Add(new Account((int)reader["id"], (float)reader["number"], (AccountType)reader["type"], (string)reader["name"], (float)reader["balance"], (float)reader["maxdebit"], (int)reader["userId"]));
        }//Not tested
    } // Dispose Reader
    //do something here
} // Dispose implicitly called

调试器显示以下内容:

调试器输出

由于某种原因,他只得到前4列。我以前从未见过这种行为,实现它的代码看起来不错。有人有什么线索吗?

编辑:问题解决了。

问题原来是一个InvalidCastingException。出于某种原因。事实证明,只有4个数组项显示的问题并不是一个真正的问题。FieldCount变量表示7个字段,这正是表中的内容。这些都被检索了。

我的表数据看起来像这样:

Ik0Ap.png (add imgur plz…没有图像,只有2个超链接,当低于10的声誉点。我编辑显示这个问题已经解决了,所以是我提交的…所以我有这个问题)

10点以下最多2个超链接

它清楚地说"float",所以我做了一个cast来浮动。但根据VS调试器,它是一个double。所以铸造是无效的。

所以这是主要问题。为什么只展示了其中的4块,这对我来说仍然是个谜……也许VS2010设置,以防止数组与数以千计的对象被打印到调试器?

ADO.NET请求没有从所有列返回数据

尝试显式指定列,如:

SELECT id, name, number, type, balance, ... etc.