0

我正在尝试在带有日期列的 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。尝试在周围加上单引号,但它也失败了。

数据库列类型是日期。

以前有人做过吗?有任何想法吗?

我检查了这个链接搜索并回答,但它没有帮助。谢谢

4

3 回答 3

1

我注意到的第一件事是,当您添加参数时,它从开头缺少“@”,您的命令使用“@”引用值。

您确定 Parameters[2] 是您的“fecha”参数吗?

于 2011-12-27T22:36:15.730 回答
1
  1. 尝试使用:

npgsqlCommand.Parameters.Add("fecha", NpgsqlDbType.Date).Value = DateTime.Now;

更多可读代码。

  1. 类型obj.date是 DateTime 结构吗?

  2. 添加到连接字符串参数Convert Infinity DateTime 有关更多信息检查:http ://www.npgsql.org/doc/connection-string-parameters.html

于 2017-01-11T23:24:05.503 回答
0

query.Parameters[2].Value = CDate(obj.date)

于 2014-02-18T01:51:46.413 回答