0

日付列を持つ 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.date 値は 2011-04-29 です。一重引用符で囲んでみましたが、これも失敗します。

データベースの列の型は日付です。

誰もこれを以前にやったことがありますか?何か案は?

このリンクを検索して確認しましたが、役に立ちませんでした。ありがとう

4

3 に答える 3

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 に答える
1

最初に気付いたのは、パラメーターを追加するときに、コマンドが「@」で値を参照する最初から「@」が欠落していることです。

Parameters[2] が「fecha」パラメータであると確信していますか?

于 2011-12-27T22:36:15.730 に答える
0

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

于 2014-02-18T01:51:46.413 に答える