OleDB solo tornando DBNull, che cosa ho fatto di male?
-
19-09-2019 - |
Domanda
Ho il seguente codice:
// 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.
}
Questo è il mio codice esatto. Campo 0 è la chiave primaria, in modo da non dovrebbe mai essere nullo, ma ogni singola riga viene restituito dal database ha tutti i campi impostati su DBNull! Non riesco a vedere quello che sto facendo male, chiunque può far luce su questo?
La mia stringa di connessione è:
Provider = Microsoft.Jet.OLEDB.4.0; Dati Source = C: \ percorso \ a \ database.mdb
Soluzione
Per un motivo o un altro, utilizzando il selettore *
colonna è stata jumbling colonne. Utilizzando un elenco specifico risolve questo. Sono ancora curioso di sapere motivi per cui questo potrebbe accadere.
Esecuzione fissa:
OleDbCommand personQuery = new OleDbCommand("SELECT [ID], [Surname], ... FROM [Individual]", _access);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow