dotConnect Express: 7.4.602
PostgreSQL: 9.1.3 64-bit
Code: Select all
using System;
using System.Data;
using System.Data.Common;
using Devart.Data.PostgreSql;
public static class Program
{
public static void Main()
{
TimeSpan value = TimeSpan.FromMilliseconds(1);
TimeSpan valueLoaded;
var conStr = "Host=...;Port=5432;User Id=...;Password=...;Database=...;Unicode=true;";
using(PgSqlConnection con = new PgSqlConnection(conStr))
{
// Arrange:
con.Open();
Console.Write("Creating table..");
var cmd = con.CreateCommand();
cmd.CommandText = "drop table test";
try {
cmd.ExecuteNonQuery();
} catch {}
cmd.CommandText = "create table test (timespan interval) with oids";
cmd.ExecuteNonQuery();
Console.WriteLine("OK");
// Arrange:
Console.Write("Inserting..");
cmd = con.CreateCommand();
cmd.CommandText = "insert into test (timespan) values (:p1)";
var parameter = cmd.CreateParameter();
parameter.ParameterName = "p1";
var nativeParameter = (PgSqlParameter)parameter;
nativeParameter.PgSqlType = PgSqlType.Interval;
nativeParameter.Value = (object)new PgSqlInterval((TimeSpan)value);
cmd.Parameters.Add(parameter);
// without this everything works fine:
cmd.UnpreparedExecute = true;
cmd.ExecuteNonQuery();
Console.WriteLine("OK");
// Test:
Console.Write("Selecting..");
cmd = con.CreateCommand();
cmd.CommandText = "select timespan from test";
using(var reader = cmd.ExecuteReader())
{
var nativeReader = (PgSqlDataReader)reader ;
reader.Read();
valueLoaded = (TimeSpan)nativeReader.GetPgSqlInterval(0);
//valueLoaded = (TimeSpan)reader.GetValue(0);
}
Console.WriteLine("OK");
// Check:
Console.WriteLine("Value expected: " + value + ", ms: " + value.Milliseconds);
Console.WriteLine("Value actual : " + valueLoaded + ", ms: " + valueLoaded.Milliseconds);
}
}
}