Oracle kann ein kniffliges Biest sein.
Verwenden Sie zuerst OdbcConnection
anstelle von SqlConnection
, wenn Sie ODBC verwenden.
See docs from Microsoft
Beispielcode von oben MSDN Link angepasst:
Private Sub InsertRow(ByVal connectionString As String)
Dim queryString As String = _
"INSERT INTO Customers (CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')"
Dim command As New OdbcCommand(queryString)
Using connection As New OdbcConnection(connectionString)
command.Connection = connection
connection.Open()
command.ExecuteNonQuery()
' The connection is automatically closed at
' the end of the Using block.
End Using
End Sub
Dim connectionString as String = <your connection details here>
InsertRow(connectionString)
Als nächstes empfehle ich Ihnen die Oracle Data Provider verwenden für .NET (ODP.NET, AKA Oracle.DataAccess.dll
), die mit den zur Verfügung gestellt Oracle-Client (obwohl nicht immer standardmäßig installiert; Sie müssen möglicherweise benutzerdefinierte Installation durchführen), führt besser als ODBC aus und ist in der Lage, Oracle-spezifische Funktionen zu verwenden. Wenn Sie ODBC verwenden möchten (und es gibt natürlich einige gute Gründe, es so generisch zu halten), lesen Sie weiter:
Zusätzlich zu anderen Vorschlägen, stellen Sie sicher, dass die Architekturen übereinstimmen. Dies gilt nur für Sie, wenn Sie sich in einer 64-Bit-Box befinden.
Wenn 64-Bit-Betriebssystem und 64-Bit-App müssen Sie 64-Bit-ODBC verwenden, um den DSN zu definieren C:\Windows\System32\odcad32.exe
Wenn 64-Bit-Betriebssystem und 32-Bit-Anwendung, die Sie müssen 32-Bit-ODBC verwenden, das zu definieren, C:\Windows\SysWOW64\odbcad32.exe
DSN
(Ja, sind die Namen wirklich verwirrend! SysWOW64
im Grunde bedeutet 32-Bit in einem enviro 64-Bit-Emulation. Das andere Problem ist Microsoft das Ding odbcad32
an erster Stelle genannt .. vielleicht odbcad
wären besser, aber sie mussten wahrscheinlich zu dieser Zeit zwischen der 32-Bit- und der 16-Bit-Version unterscheiden .. nur eine Vermutung)
Bei 32-Bit-Betriebssystem ist der Speicherort odbcad32.exe
der Standardspeicherort (entspricht 64-Bit auf 64-Bit) und ist standardmäßig in Ihrem PATH
.
Wenn Ihre App wird in 32-Bit laufen und 64-Bit, dann müssen Sie zwei DSNs definieren, eine für 32 und eine für 64
Alternativ können Sie die Architektur des Projekts in den Projekteinstellungen festgelegt. Standardmäßig kann es Any CPU
sein, was (ich denke) bedeutet, dass die native bevorzugen. Wenn Sie auf 64-Bit-Betriebssystem aufbauen, erhalten Sie 64-Bit-exe, wenn Sie es in x86
oder etwas ändern. In Visual Studio 2015 können Sie auch das Kontrollkästchen prefer 32-bit
verwenden.
Und das gleiche gilt für den Oracle-Client: Sie müssen die passende Architektur verwenden.
können Sie Ihre Datenbank über den Port 1433 telnet? –
@ शेखशेख Ich kann die Oracle-Verbindung von der ODBC-Setup auf dem Server testen, es funktioniert. –