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设置,以防止数组与数以千计的对象被打印到调试器?
尝试显式指定列,如:
SELECT id, name, number, type, balance, ... etc.