我正在尝试通过此方法获取系统日期,但显示错误说:
Cannot implicitly convert type 'System.Data.DataSet' to 'System.DateTime'
以下是我正在使用的方法。任何建议表示赞赏。为什么会发生这种情况,我该如何解决?
public DateTime GetLocalTime()
{
OracleBridge ob = new OracleBridge(_connStr);
string sqlQuery = "select sysdate from dual";
DateTime dt = new DateTime();
try
{
dt = Convert.ToDateTime(ob.ExecuteScalar(sqlQuery, CommandType.Text)); //this line is giving error
}
catch (OracleException ex)
{
throw ex;
}
return dt;
}
答案 0 :(得分:3)
除了例外情况,您无法将public class ShirtOrdersViewModel
{
public int ShirtSizeId { get; set; }
public IEnumerable<ShirtSize> ShirtSizes { get; set; }
public int ShirtQuantityId { get; set; }
public IEnumerable<ShirtQuantity> ShirtQuantities { get; set; }
public int ShirtId { get; set; }
public IEnumerable<Shirt> Shirts { get; set; }
public int FileId { get; set; }
public IEnumerable<File> Files { get; set; }
public int OrderId { get; set; }
public IEnumerable<Order> Orders { get; set; }
public decimal Total { get; set; }
}
类型转换为DataSet
。
DateTime
那条线是错的。如果您期望具有DateTime值的唯一行结果,则必须使用dt = ob.ExecuteQuery(sqlQuery, CommandType.Text);
方法并将结果转换为DateTime:
ExecuteScalar
如果您不期望该结果,则必须访问您要查找的特定行,然后获取该值:
dt = Convert.ToDateTime(yourOracleConnection.ExecuteScalar(sqlQuery, CommandType.Text)); //I assume you are using ADO.NET Library
答案 1 :(得分:0)
如果它只是您要检索的一个值,则使用将返回对象的ExecuteScalar
方法。将其转换为datetime
public DateTime GetLocalTime()
{
OracleBridge ob = new OracleBridge(_connStr);
string sqlQuery = "select distinct sysdate from dual";
DateTime dt = new DateTime();
try
{
dt = Convert.ToDateTime(ob.ExecuteScalar(sqlQuery, CommandType.Text));
}
catch (OracleException ex)
{
throw ex;
}
return dt;
}
答案 2 :(得分:0)
在语法方面,已经提供的答案应该是足够的,如果你进一步抛出异常,你实际需要的只是
catch (OracleException)
{
throw;
}