Dieser Blog beschreibt, wie Sie eine ODBC-Verbindung von .NET unter Linux erhalten. Sie können .NET mit jedem Easysoft ODBC-Treiber verwenden, der auf der Linux-Plattform verfügbar ist. Dieser Beispieltreiber, den dieser Blog verwendet, ist das Easysoft ODBC-JDBC Gateway, das zwischen ODBC und JDBC konvertiert und es Ihnen ermöglicht, mit Java-Daten aus .NET zu arbeiten.
- Falls noch nicht geschehen, installieren Sie .NET gemäß den Anweisungen von Microsoft.
- Stellen Sie sicher, dass der Bibliothekspfad Ihres .NET-Rechners den Ordner unixODBC/lib enthält. Wenn Sie den unixODBC-Treibermanager verwenden, der in einer Easysoft-Treiberverteilung enthalten ist, müssen Sie auch einen symbolischen Link für
libodbc.so.2
hinzufügen . Zum Beispiel:cd /usr/local/easysoft/unixODBC/lib ln -s libodbc.so.1 libodbc.so.2
- Installieren Sie als Nächstes den ODBC-Teil von .NET:
dotnet add package System.Data.Odbc --version 4.7.0
- Erstellen Sie ein neues .NET-Programm. Beispiel:
dotnet new console --output sample1
- Bearbeiten Sie Program.cs und verwenden Sie so etwas wie:
using System; using System.Data.Odbc; namespace EasysoftODBCJDBCSample { class Program { static void Main(string[] args) { try { OdbcConnection DbConnection = new OdbcConnection("DSN=OJG"); DbConnection.Open(); OdbcCommand DbCommand = DbConnection.CreateCommand(); DbCommand.CommandText = "select * from MyTable"; OdbcDataReader DbReader = DbCommand.ExecuteReader(); while( DbReader.Read()) { for (int i = 0; i < DbReader.FieldCount; i++) { if (DbReader.IsDBNull(i)) { Console.Write("NULL,"); } else { Console.Write(DbReader.GetValue(i).ToString() + ","); } } Console.WriteLine(); } Console.Write("Data Finished"); DbReader.Close(); DbCommand.Dispose(); DbConnection.Close(); } catch (OdbcException ex) { Console.WriteLine(ex.Message); return; } } } }
In der Zeile:
OdbcConnection DbConnection = new OdbcConnection("DSN=OJG");
Ersetzen Sie
OJG
mit dem Namen Ihrer ODBC-Datenquelle wie in derodbc.ini
definiert Datei. - So führen Sie das Beispiel aus:
dotnet run --project sample1