-1

I am trying to write c# function to read some data from oracle table

My functions:

public static writeConsole(string query, string connectionString, string driver)
{
    //driver = Oracle.ManagedDataAccess.Client
    using (var conn = DbProviderFactories.GetFactory(driver).CreateConnection())
    {
        using (var cmd = conn.CreateCommand())
        {
            cmd.Connection.ConnectionString = connectionString;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = query;

            foreach (var item in ReadDouble(cmd))
            {
                Console.WriteLine(item);
            }
        }
    }
}
private static IEnumerable<double> ReadDouble(IDbCommand cmd)
{
    using (var r = cmd.ExecuteReader())
    {
        while (r.Read())
            yield return r.GetDouble(0);
    }
}

There is no problem in connection, nor executing query.

When I read data from oracle table in type number(9) it returns proper values I am expecting.

When I read data from table, where type is number(9,2) it returns empty value (like empty table).

Notice: This is only sample of the code. It has to be written using IDb interfaces

Thank you for help

Petr Ehler
  • 23
  • 5

2 Answers2

0

Possibly it is problem with type mapping. Try this:

http://docs.oracle.com/html/E10927_01/featSafeType.htm#i1008428

And this:

https://community.oracle.com/message/3582080

Michał M
  • 618
  • 5
  • 13
  • Useful information to improve the quality of your answer: [Are answers that just contain links elsewhere really “good answers”?](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) – sstan Jun 07 '16 at 12:57
0
public static writeConsole(string query, string connectionString, string driver)
{
    //driver = Oracle.ManagedDataAccess.Client
    using (var conn = DbProviderFactories.GetFactory(driver).CreateConnection())
    {
        using (var cmd = conn.CreateCommand())
        {
            cmd.Connection.ConnectionString = connectionString;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = query;
            var reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                Console.WriteLine(reader[0]+"");
            }
        }
    }
}

You can Try

        OracleConnection conn = new OracleConnection(connectionString);
        OracleCommand cmd = new OracleCommand(query, conn);
        if (conn.State == ConnectionState.Closed)
            conn.Open();
        OracleDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
            {
                Console.WriteLine(reader[0]+"");
            }
Alper Şaldırak
  • 1,034
  • 8
  • 10