使用.NET和Oracle读取SQL查询的最佳方法

使用.NET和Oracle读取SQL查询的最佳方法,.net,oracle,stored-procedures,.net,Oracle,Stored Procedures,如何获得SQL查询计算的结果 比如说,有两个案例” 这将从存储过程返回 在.net、C#(Windows窗体)上阅读这篇文章的最佳方式是什么?如果您认为可以获得多条记录,那么您可以使用DataReader,如果您只获得一个值,没有记录,也没有多个列,则可以使用ExecuteCalar 下面介绍如何调用存储过程并获取读取器,然后读取其第一列: using(var conn = new OracleConnection("Data Source=oracledb;User Id=UserID;Pa

如何获得SQL查询计算的结果

比如说,有两个案例”

这将从存储过程返回


在.net、C#(Windows窗体)上阅读这篇文章的最佳方式是什么?

如果您认为可以获得多条记录,那么您可以使用
DataReader
,如果您只获得一个值,没有记录,也没有多个列,则可以使用
ExecuteCalar

下面介绍如何调用存储过程并获取读取器,然后读取其第一列:

using(var  conn = new OracleConnection("Data Source=oracledb;User Id=UserID;Password=Password;"))
{
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "storedProcedurename";
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add(...);

    conn.Open();
    OracleDataReader dr = cmd.ExecuteReader();

    while(dr.Read())
    {
        var yourResult = dr[0].ToString();
    }
}

这取决于您是在调用存储过程,还是在尝试恢复记录

对于存储过程,它可以将值分配给
out
inout
参数,或者生成一个记录集。对于前者,您需要使用属性指定参数类型。对于后者,除了需要将
command.CommandType
设置为之外,所有操作都作为普通查询进行

典型的SQL查询如下所示:

using (var cmd = connection.CreateCommand())
{
    cmd.CommandText = "SELECT something FROM YourTable";
    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            Console.WriteLine(reader["something"]);
        }
    }

}

至于数据库连接,我建议您使用
DbProviderFactory
生成它,以获得尽可能通用的代码:

您尝试了什么?演示如何从C调用查询。请,这是对一个更通用的问题的通用回答。使用DataReader并读取返回的字符串怎么样?
using (var cmd = connection.CreateCommand())
{
    cmd.CommandText = "SELECT something FROM YourTable";
    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            Console.WriteLine(reader["something"]);
        }
    }

}