.NET 6 è possibile accedere a Oracle tramite la libreria NuGet Oracle.ManagedDataAccess.Core

Text: NuGet Library Oracle

dotnet add package Oracle.ManagedDataAccess.Core --version 3.21.110
il formato della connection string deve essere questo

Text: Formato connection string

Data Source=[hostname]:[port]/[DB service name];User Id=[username];Password=[password];

L'accesso da C# ad Oracle può essere fatto secondo questo esempio:

C#: Program.cs

using Oracle.ManagedDataAccess.Client;

TestOracle().Wait();

static async Task TestOracle()
{
    string connectionString = "Data Source=localhost:1521/XEPDB1;"
        + "DBA Privilege=SYSDBA;"
        + "User Id=SYS;Password=?????????;";

    string query = "SELECT \'Ciao\' FROM dual";

    OracleConnection con = new OracleConnection(connectionString);
    await con.OpenAsync();
    OracleCommand cmd = con.CreateCommand();
    cmd.CommandText = query;

    DbDataReader reader = await cmd.ExecuteReaderAsync();
    await reader.ReadAsync();
    Console.WriteLine(reader.GetString(0));
}
ATTENZIONE: nella connection string ho utilizzato, per l'esempio, l'attributo DBA Privilege=SYSDBA; con l'utente SYS, questa cosa è da evitare assolutamente in produzione.
L'utente SYS è molto potente, si tratta di un super admin Oracle non deve essere usato nelle applicazioni.

Meglio seguire sempre il principio di sicurezza di utilizzare un utente dedicato alla singola applicazione, con i minori privilegi possibili.
Questo per ridurre il più possibile i rischi e l'esposizione dei dati in caso di attacco hacker.

Se si utilizza un utente con elevati privilegi come SYS senza il parametro DBA Privilege=SYSDBA;, si ottiene l'errore
One or more errors occurred. (ORA-28009: la connessione come SYS deve essere come SYSDBA o come SYSOPER)

ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Tags:
Oracle24 C#235 .NET66 .NET 65
Potrebbe interessarti anche: