首页 > 解决方案 > 我应该使用 OracleClient 还是 ADODB 来使用 c# 连接到 Oracle 数据库?

问题描述

我正在尝试使用 c# 连接到 Oracle 数据库。我看到我有两个选择: using System.Data.OracleClient;using ADODB;

我熟悉 MySQL,这就是为什么我更容易理解和使用 OracleClient 的原因。但是,我看到当我使用它时,c# 说它已被弃用。这让我想知道我的 OracleClient 代码是否能在 1-2 年内正常工作。

我应该怎么办?

下面是我使用 OracleClient 的代码:

public class DataHelper
    {
        public OracleConnection connection;
        String connectionString;

        public DataHelper()
        {
            connectionString = "this should be connection string";
            
            connection = new OracleConnection(connectionString);
        }

        public List<Machine> GetAllMachines()
        {
            List<Machine> temp= new List<Machine>();
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                string queryString = "SELECT * FROM MACHINES";
                OracleCommand command = new OracleCommand(queryString);
                try
                {
                    command.Connection = connection;
                    connection.Open();
                    command.CommandType = CommandType.Text;
                    //command.ExecuteNonQuery();
                    OracleDataReader reader = command.ExecuteReader();
                    int machineNr, nrOfLinesPerCm;
                    double cycleTime, currentTime, heightOfLamallae;
                    string machineType;
                    while (reader.Read())
                    {
                        machineNr = Convert.ToInt32(reader["MACHINE_NR"]);
                        cycleTime = Convert.ToDouble(reader["CYCLE_TIME"]);
                        currentTime = Convert.ToDouble(reader["CURRENT_TIME"]);
                        machineType = Convert.ToString(reader["TYPE"]);
                        nrOfLinesPerCm = Convert.ToInt32(reader["NR_OF_LINES_PER_CM"]);
                        heightOfLamallae = Convert.ToDouble(reader["HEIGHT_OF_LAMALLAE"]);
                        temp.Add(new Machine(machineNr, cycleTime, currentTime, nrOfLinesPerCm, heightOfLamallae, machineType));
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    connection.Close();
                }
            }
            return temp;
        }
        
    } 

如果您推荐 ADODB,您将如何使用它来实现它?

标签: c#databaseadodboracleclient

解决方案


Oracle 客户端没有被弃用,但你的被弃用了。您可以从 Nuget下载Oracle.ManagedDataAccess(适用于 .Net)或(适用于 .Net Core)。Oracle.ManagedDataAccess.Core这些是独立客户端,不需要安装本机客户端。


推荐阅读