簡體   English   中英

OleDB只返回DbNull,我做錯了什么?

[英]OleDB only returning DbNull, what have I done wrong?

我有以下代碼:

// 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是主鍵,因此永遠不應為null,但從數據庫返回的每一行都將所有字段設置為DBNull! 我看不出自己做錯了什么,有人可以對此有所了解嗎?

我的連接字符串是:

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

出於這樣或那樣的原因,使用*列選擇器是混亂的列。 使用特定列表可以解決此問題。 我仍然很好奇為什么會發生這種情況。

固定版本:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM