[英]Problems with Data type in Npgsql query
我正在尝试在带有日期列的 PostgreSQL 表中插入一行。 在 UI 上,我有一个 DateTimePicker,用户可以在其中选择正确的日期。 到目前为止,我得到了这个:
在用户界面上:
objPresupuesto.date = this.dtpFechaPres.Value.ToString("yyyy-MM-dd");
关于插入行的方法:
NpgsqlCommand query = new NpgsqlCommand("insert into presupuesto(presupuesto, codigo, descripcion, fecha, cliente, proyecto, total) values(nextval('presupuesto_presupuesto_seq'), @codigo, @descripcion, @fecha, @cliente, @proyecto, @total);Select lastval();", conn);
...
query.Parameters.Add(new NpgsqlParameter("fecha", NpgsqlDbType.Date, 0, "fecha"));
...
query.Parameters[2].Value = obj.date.toString;//without the toString it also fails
它抛出这个异常:
Specified cast is not valid.
obj.date 值为 2011-04-29。 尝试在周围加上单引号,但它也失败了。
数据库列类型是日期。
以前有人做过吗? 有任何想法吗?
我检查了这个链接搜索并回答,但它没有帮助。 谢谢
我注意到的第一件事是,当您添加参数时,从命令引用带有“@”的值的开头就缺少“@”。
您确定 Parameters[2] 是您的“fecha”参数吗?
query.Parameters[2].Value = CDate(obj.date)
npgsqlCommand.Parameters.Add("fecha", NpgsqlDbType.Date).Value = DateTime.Now;
更多可读代码。
obj.date
的类型是 DateTime 结构吗?
添加到连接字符串参数Convert Infinity DateTime
更多信息检查: http://www.npgsql.org/doc/connection-string-parameters.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.