c# – I cannot read the values ​​returned from the database using OracleDataReader

Question:

I'm having a problem reading the values ​​returned from a select , on the line where I do:

OracleDataReader reader = cmd.ExecuteReader();

in read it brings me the values ​​correctly, but in the next line where I do reader.Read() says that the enumeration didn't generate results.

How do I solve this problem?

Source

OracleConnection cnn = new OracleConnection(DataFunctions.GetDefaultConnectionString()); OracleCommand cmd = cnn.CreateCommand(); OracleDataAdapter adapter = new OracleDataAdapter();
try
{
    cnn.Open();
    cmd.Connection = cnn;
    cmd.CommandText = String.Format("select * from VI_TESTE where cd_codigo = {0}", code);
    OracleDataReader reader = cmd.ExecuteReader();

    // Ao debugar, aqui tem registros

    if (reader.Read())
    {
        // aqui não tem mais registros
        var test1 = reader.GetValue(0);
    }
}
finally
{
    cnn.Close();
}

Answer:

The approach by OracleDataReader will possibly bring you inspection problems. For your case, just use OracleDataAdapter as shown below:

using (var cnn = new OracleConnection(DataFunctions.GetDefaultConnectionString())) 
{
    var cmd = cnn.CreateCommand(); 

    try
    {
        cnn.Open();
        cmd.Connection = cnn;
        cmd.CommandText = String.Format("select * from VI_TESTE where cd_codigo = {0}", code);
        var ds = new DataSet();
        var adapter = new OracleDataAdapter(cmd);
        adapter.Fill(ds);

        // Inspecione aqui ds
    }
    finally
    {
        cnn.Close();
    }
}
Scroll to Top