2010-09-29 46 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