无法将DataTable类型的对象强制转换为System.IConvertible类型

时间:2014-11-19 06:59:07

标签: c# oracle10g

我继承了一个我正在努力解决问题的应用程序。我不确定这是否是编写应用程序的最佳方式,我会以不同的方式完成它,但我不想重写它。

该应用程序具有Oracle 10g作为后台db。我的前任似乎发送了两个日期参数并将它们格式化为System.Datetime(YYYY / MM / DD HH24:mm:ss)。我认为这可能是问题,但我不是百分之百肯定的。我检查了数据库的NLS_DATE_FORMAT,它是DD / MON / RR HH24:MI:SS,我认为错误可能是因为错误的日期格式用于查询数据库。如果可能的话,我会很感激帮助解决这个问题。

int totalcount = System.Convert.ToInt32(adapter.GetValues(myStartDate, myStartDate.AddHours(1)));

// Designer.cs中的代码 - 通过禁用“仅我的代码”

来单步执行
public virtual Mytable.MytableDataTable GetValues(System.DateTime startDate, System.DateTime endDate) {
    this.Adapter.SelectCommand = this.CommandCollection[2];
    this.Adapter.SelectCommand.Parameters[0].Value = ((System.DateTime)(startDate));
    this.Adapter.SelectCommand.Parameters[1].Value = ((System.DateTime)(endDate));
    Mytable.MytableDataTable tdataTable = new Mytable.MytableDataTable(); *<<--- when I use the visualizer to view tdataTable, there's nothing in the table. This then throws the above titled error message.*

    this.Adapter.Fill(dataTable);
    return dataTable;

}

提前致谢。

创建并运行测试,测试失败,并显示以下消息: 'System.NullReferenceException:对象引用未设置为对象的实例。'

堆栈跟踪错误:

        public void BookClub_BeforePrintTest()
    {
        BookClub_Accessor target = new BookClub_Accessor(); // TODO: Initialize to an appropriate value
        object sender = null; // TODO: Initialize to an appropriate value
        PrintEventArgs e = null; // TODO: Initialize to an appropriate value
        target.BookClub_BeforePrint(sender, e);
        Assert.Inconclusive("A method that does not return a value cannot be verified.");
    }

1 个答案:

答案 0 :(得分:0)

在您的方法中,您将返回datatable,然后尝试将其转换为int。你不能这样做。如果你的适配器只用一个值(标量)填充数据表,你可以使用类似的东西

  

return(int)dataTable.Rows [0] [0];