3

我正在尝试从 a 中获取or DataTable,但我失败了。这是代码:DataSetIDataReader

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

我正在使用IDbConnection并且IDbCommand因为它可以与三个不同的数据库一起使用(该方法CreateConnection(provider, connectionString)根据数据库获取特定类型的连接)。我的查询得到一个 ID(作为 Int64)和一个 DocNumber(作为十进制),但每次我尝试获取十进制值时,它都会抛出OverflowException一条消息:“转换溢出。” 这两个值对我都很重要,但我不知道如何获得这些值。

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

一些帮助?

4

1 回答 1

6

虽然我没有通过执行来检查,但它应该可以工作......

    // 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);
于 2011-09-13T12:30:10.027 回答