2017-01-27 30 views
-2
私は、このメソッドを介してシステム日付を取得しようとしていますが、というエラーを示している

:以下 は、暗黙的に型「でSystem.Data.DataSet」を変換できません「のSystem.DateTime」

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

例外が言うようにあなたはDateTimeに、DataSetタイプを変換することはできません。

dt = ob.ExecuteQuery(sqlQuery, CommandType.Text); 

その行が間違っています。あなたはDateTime値でのみ行の結果を期待している場合は、ExecuteScalarメソッドを使用する必要がありますし、日時などの結果をキャスト:

dt = Convert.ToDateTime(yourOracleConnection.ExecuteScalar(sqlQuery, CommandType.Text)); //I assume you are using ADO.NET Library 

をあなたはその結果を期待していない場合は、特定にアクセスする必要が行は、あなたが探しているし、このように値を取得している:それはあなたが取得日時にobject.Convertそれを返しますExecuteScalarメソッドを使用しようとしているだけで一つの値である場合は

dt = Convert.ToDateTime(ob.ExecuteQuery(sqlQuery, CommandType.Text).Tables[0].Rows[0]["YourColumnName"]); //You´ll have to check out where is the value you want and replace on the Rows[0] 
+0

で、構文の面で、sufficantする必要があります次のエラー: 'System.Data.CommandType'から 'System.Data.OracleClient.OracleTransaction'に変換できません – Programmermid

+0

ExecuteScalarを試していますか? OracleBridgeラッパーに実装されていますか?その場合は、コードを投稿してください。 – NicoRiff

+0

私は皆、ExecuteScalarメソッドの実装が悪いようです。 – NicoRiff

0

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; 
    } 
すでに提供の
+0

@inquisitiveImindここで言及されている変換ステートメントを使用すると、結果が1つしかないと予想されます。「System.Data.CommandType」から「System.Data.OracleClient.OracleTransaction」に変換できません。 – Programmermid

0

回答は、あなたが例外をスローした場合、さらにあなたが実際に必要なのは、私が唯一の1つの行の結果を期待していますし、ここで言及CONVERT文を使用する場合、それはスロー

catch (OracleException) 
{ 
    throw; 
} 
関連する問題