Frage

Ich habe den folgenden Code:

// 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.
}

Dies ist mein genauer Code. Feld 0 ist der Hauptschlüssel, also sollte niemals null sein, aber jede einzelne Zeile, die aus der Datenbank zurückgegeben wird, hat alle Felder auf DBNULL eingestellt! Ich kann nicht sehen, was ich falsch mache. Kann jemand etwas Licht darauf werfen?

Meine Verbindungszeichenfolge lautet:

Provider = microsoft.jet.oledb.4.0; Data Source = C: Path to database.mdb

War es hilfreich?

Lösung

Aus dem einen oder anderen Grund verwenden Sie die * Der Spaltenwähler jurmelte Spalten. Durch die Verwendung einer bestimmten Liste wird dies festgelegt. Ich bin immer noch neugierig, warum dies passieren könnte.

Feste Version:

OleDbCommand personQuery = new OleDbCommand("SELECT [ID], [Surname], ... FROM [Individual]", _access);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top