Wie bekomme ich einen DataTable aus IDataReader?
Ich versuche, einen DataTable
oder DataSet
aus einer IDataReader
, aber ich versage. Hier ist der code:
string sql = @"SELECT ID, DOCNUMBER FROM TBDOCUMENT";
using (IDbConnection conn = CreateConnection(provider, connectionString))
{
conn.Open();
using (IDbCommand command = conn.CreateCommand())
{
command.CommandText = sql;
IDataReader reader = command.ExecuteReader();
using (reader)
{
while (reader.Read())
{
long key = reader.GetInt64(0);
decimal value = reader.GetDecimal(1);
}
}
}
}
Ich bin mit IDbConnection
und IDbCommand
denn es arbeitet mit drei verschiedenen Datenbanken (die Methode CreateConnection(provider, connectionString)
wird die spezifische Art der Verbindung gemäß der Datenbank).
Meine Abfrage bekommt eine ID (als Int64) und eine DocNumber (als Dezimalzahl), aber jedes mal, wenn ich versuche, um die dezimal-Wert, es wirft ein OverflowException
mit einer Meldung: "Konvertierung überläuft." Beide Werte sind mir wichtig, aber ich weiß nicht, wie bekomme ich diese Werte.
Eigentlich ist der code, den ich bin nicht versuchen, zu konvertieren, um eine DataTable
habe ich zu erhalten die Wert der beiden, ohne Ausnahme.
Hilfe?
- was ist die Spalte Art der DOCNUMBER in der TBDOCUMENT Tabelle? wenn es eine ganze Zahl, die Sie haben sollten, int Wert = reader.GetInt...
- Hallo Davide, der Art der DOCNUMBER in TBDOCUMENT ist Dezimal(30,0).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl ich nicht überprüfen Sie durch ausführen, aber es sollte funktionieren...