gpt4 book ai didi

asp.net - 尝试通过 ODBC 连接 - "The network path was not found"

转载 作者:行者123 更新时间:2023-12-04 15:42:24 25 4
gpt4 key购买 nike

我正在尝试在 ASP 中更新数据库(通过 ODBC 的 Oracle):

<%@ Page LANGUAGE="VB"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Configuration" %>
<%


Dim objConn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("ODBCNAME").ConnectionString)

'example query
Dim strSQL As String = "update foo set bar='BAZ'"
objConn.Open()
Dim objCmd As New SqlCommand(strSQL, objConn)

Try
objCmd.ExecuteNonQuery()
Response.Write("Record updated")
Catch e As Exception
Response.Write(e.ToString)
End Try

%>

其中 web.config 有:
<connectionStrings>
<add name="ODBCNAME" connectionString="server=ExampleServerName;" providerName="System.Data.Odbc" />
</connectionStrings>

当我执行此操作时,我在 objCONn.Open() 行上收到错误消息:
System.ComponentModel.Win32Exception: The network path was not found.

ODBC 数据源已创建、测试并与其他独立应用程序(封闭源代码)一起使用,我可以通过 ODBC 设置测试连接,该设置有效。

如何从我的代码连接到这个数据库?或者我该如何调试这个问题?

最佳答案

Oracle 可能是一个棘手的野兽。

首先,使用OdbcConnection而不是 SqlConnection如果您使用的是 ODBC。

See docs from Microsoft

从上面的 MSDN 链接改编的示例代码:

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)

接下来,我建议您使用 Oracle 客户端随附的 Oracle Data Provider for .NET(ODP.NET,AKA Oracle.DataAccess.dll)(尽管并非总是默认安装;您可能需要进行自定义安装),其性能优于ODBC,并且能够利用特定于 Oracle 的功能。话虽如此,如果你想使用 ODBC(当然有一些很好的理由让它像这样保持通用),请继续阅读:

除了其他建议之外,请确保架构匹配。如果您使用的是 64 位机器,这仅适用于您。

如果是 64 位操作系统和 64 位应用程序,则必须使用 64 位 ODBC 来定义 DSN C:\Windows\System32\odcad32.exe
如果是 64 位操作系统和 32 位应用程序,则必须使用 32 位 ODBC 来定义 DSN C:\Windows\SysWOW64\odbcad32.exe
(是的,名称真的很困惑! SysWOW64 基本上意味着在 64 位环境中模拟 32 位。另一个问题是微软首先将东西命名为 odbcad32 ..也许 odbcad 会更好,但当时他们可能不得不区分 32 位和 16 位版本.. 只是猜测)

如果是 32 位操作系统,则 odbcad32.exe 的位置是默认位置(与 64 位上的 64 位相同)并且在您的 PATH 中默认情况下。

如果您的应用程序将在 32 位和 64 位下运行,那么您必须定义两个 DSN,一个用于 32,另一个用于 64。

或者,您可以在项目设置中设置项目的架构。默认情况下它可能是 Any CPU这(我认为)意味着更喜欢 native ..所以如果在 64 位操作系统上构建,除非您将其更改为 x86,否则您将获得 64 位 exe。或者其他的东西。在 Visual Studio 2015 中,您还可以使用 prefer 32-bit复选框。

Oracle 客户端也是如此:您必须使用匹配的架构。

关于asp.net - 尝试通过 ODBC 连接 - "The network path was not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com