Npgsql 查询中的数据类型问题

发布于 2024-11-03 23:54:40 字数 991 浏览 1 评论 0原文

我正在尝试在 PostgreSQL 表中插入一行,其中包含日期列。在用户界面上,我有一个 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.date 值是 2011-04-29。尝试添加单引号,但也失败了。

数据库列类型为日期。

以前有人这样做过吗?有什么想法吗?

我检查了这个链接搜索并询问,但没有帮助。 谢谢

I'm trying to insert a row in a PostgreSQL table with a date column. On the UI, I got a DateTimePicker where the user selectes the proper date. So far I got this:

On the UI:

objPresupuesto.date = this.dtpFechaPres.Value.ToString("yyyy-MM-dd");

On the method who inserts the row:

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

It throws this exception:

Specified cast is not valid.

The obj.date value is 2011-04-29. tryied putting single quotes around, but It also fails.

The database column type is date.

Anyone has done this before? Any ideas?

I checked this link searching for and aswer but it doesn't helped.
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱已欠费 2024-11-10 23:54:40

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

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

The first thing I noticed is that when you are adding your parameter it is missing the "@" from the beginning where your command references the value with the "@".

Are you sure that the Parameters[2] is your "fecha" parameter?

暮光沉寂 2024-11-10 23:54:40
  1. 尝试使用:

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

以获得更具可读性的代码。

  1. obj.date 的类型是 DateTime 结构体?

  2. 添加到连接字符串参数转换无限日期时间
    有关更多信息,请检查: http://www.npgsql.org/doc/connection -string-parameters.html

  1. try use:

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

For more readable code.

  1. Type of obj.date is DateTime struct?

  2. Add to connection string parameter Convert Infinity DateTime
    For more info check: http://www.npgsql.org/doc/connection-string-parameters.html

爱给你人给你 2024-11-10 23:54:40

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文