如何从IDataReader获取数据表

本文关键字:获取 数据表 IDataReader | 更新日期: 2023-09-27 18:08:21

我试图从IDataReader中获得DataTableDataSet,但我失败了。下面是代码:

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);
                            }
                        }
                    }
                }

我使用IDbConnectionIDbCommand,因为它将与三个不同的数据库一起工作(方法CreateConnection(provider, connectionString)根据数据库获得特定类型的连接)。我的查询获得一个ID(作为Int64)和一个DocNumber(作为Decimal),但是每次我试图获得十进制值时,它都会抛出一个OverflowException,并带有一条消息:"转换溢出。"这两个值对我来说都很重要,但是我不知道如何得到这些值。

实际上,我没有试图转换为DataTable的代码,我必须毫无例外地获得两者的值。

一些帮助吗?

如何从IDataReader获取数据表

虽然我还没有通过执行检查,但它应该工作…

    // Load the data into the existing DataSet. 
    DataTableReader reader = GetReader();
    dataSet.Load(reader, LoadOption.OverwriteChanges,
    customerTable, productTable); 
    // Load the data into the DataTable.
    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    DataTable dt = new DataTable();
    dt.Load(dr);