无法将类型'System.Data.DataSet'隐式转换为'System.DateTime'

时间:2017-01-27 18:24:45

标签: c# asp.net oracle

我正在尝试通过此方法获取系统日期,但显示错误说:

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

3 个答案:

答案 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;
}