我继承了一个我正在努力解决问题的应用程序。我不确定这是否是编写应用程序的最佳方式,我会以不同的方式完成它,但我不想重写它。
该应用程序具有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.");
}
答案 0 :(得分:0)
在您的方法中,您将返回datatable,然后尝试将其转换为int。你不能这样做。如果你的适配器只用一个值(标量)填充数据表,你可以使用类似的东西
return(int)dataTable.Rows [0] [0];