Npgsql查询中的数据类型问题

本文关键字:数据类型 问题 查询 Npgsql | 更新日期: 2023-09-27 17:53:41

我试图在一个具有日期列的PostgreSQL表中插入一行。在UI上,我有一个DateTimePicker,用户在其中选择适当的日期。到目前为止,我得到了这个:

在UI上:

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。日期值为2011-04-29。我试过用单引号,但是也失败了。

数据库列类型为date。

以前有人这样做过吗?什么好主意吗?

我检查了这个链接搜索和答案,但它没有帮助。由于

Npgsql查询中的数据类型问题

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

你确定Parameters[2]是你的"fecha"参数吗?

  1. 尝试使用:

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

为更可读的代码。

  • obj.date的类型是DateTime结构?

  • 添加连接字符串参数Convert Infinity DateTime更多信息请访问http://www.npgsql.org/doc/connection-string-parameters.html

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