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).
Schreibe einen Kommentar