Проблемы с типом данных в запросе Npgsql - PullRequest
0 голосов
/ 29 апреля 2011

Я пытаюсь вставить строку в таблицу PostgreSQL со столбцом даты.В пользовательском интерфейсе я получил 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.попытался положить одинарные кавычки, но это также не удается.

Тип столбца базы данных - дата.

Кто-нибудь делал это раньше?Есть идеи?

Я проверил эту ссылку в поиске и ответе, но это не помогло.Спасибо

Ответы [ 3 ]

1 голос
/ 28 декабря 2011

Первое, что я заметил, это то, что когда вы добавляете свой параметр, в начале пропускается «@», где ваша команда ссылается на значение с «@».

Вы уверены, что Parameters [2] - это ваш параметр "fecha"?

0 голосов
/ 12 января 2017
  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

0 голосов
/ 18 февраля 2014

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

...