2010-09-29 48 views
0

我具有從DB用下面的代碼獲取日期時間的方法:錯誤調用NpqsqlCommand.ExecuteScalar歌廳DB時間

NpgsqlCommand CMD = ActiveConnection.CreateCommand(); cmd.CommandText =「SELECT NOW()」;

object obj = cmd.ExecuteScalar(); return(DateTime)obj;

將結果轉換爲DateTime時,有時會引發InvalidCastException。有時結果(obj)爲空。 任何想法爲什麼發生這種情況?你有什麼想法在哪裏開始抓撓?

TIA 何塞·塔瓦雷斯

+0

你使用的是哪個版本?最新版本有更好的類型處理,哪些麪包車可以幫助您解決產品問題。我希望它有幫助。 – 2011-02-01 03:02:48

+0

我有2.0.7版本。解決了併發問題後,我停止了這個錯誤。我現在有一個連接池,而不是管理對唯一連接的訪問​​。 – jpsstavares 2011-02-01 10:56:08

回答

1

這是因爲沒有現在的PostgreSQL()函數。用這個代替:

//create NpgsqlCommand instance, cmd 
cmd.CommandText = "select current_timestamp"; 
DateTime dt; 
DateTime.TryParse(cmd.ExecuteScalar().ToString(), out dt); 
return dt; 
+1

PostgreSQL中有一個now()函數:http://www.postgresql.org/docs/current/static/functions-datetime.html – 2010-11-17 23:25:56

+0

是的函數存在。大多數時候這個功能都能正常工作,但有時候我會遇到問題。 – jpsstavares 2010-11-18 15:33:20

+0

它與併發有關嗎? – jpsstavares 2010-11-18 15:36:46