gpt4 book ai didi

c# - OleDB 只返回 DbNull,我做错了什么?

转载 作者:行者123 更新时间:2023-11-30 17:24:13 25 4
gpt4 key购买 nike

我有以下代码:

// personCount = 7291; correct value
int personCount = (int)new OleDbCommand("SELECT COUNT(*) AS [count] FROM [Individual]", _access).ExecuteScalar();
List<Person> people = new List<Person>();

OleDbCommand personQuery = new OleDbCommand("SELECT * FROM [Individual]", _access);

using (OleDbDataReader personReader = personQuery.ExecuteReader())
{
int curPerson;

while (personReader.Read())
{
curPerson++;
// This runs several times
if (personReader.IsDBNull(0)) continue;
// [snip] create a new Person and add it to people
}
// at this point, curPerson == 7291 but the list is empty.
}

这是我的确切代码。字段 0 是主键,因此永远不应为空,但从数据库返回的每一行都将所有字段设置为 DBNull!我看不出我做错了什么,任何人都可以对此有所了解吗?

我的连接字符串是:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\database.mdb

最佳答案

出于某种原因,使用 * 列选择器会混淆列。使用特定列表可以解决此问题。我仍然很好奇为什么会发生这种情况。

固定版本:

OleDbCommand personQuery = new OleDbCommand("SELECT [ID], [Surname], ... FROM [Individual]", _access);

关于c# - OleDB 只返回 DbNull,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1310127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com