OLEDBはdbnullを返すだけです、私は何を間違えましたか?
-
19-09-2019 - |
質問
次のコードがあります。
// 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);
所属していません StackOverflow