2015-10-28 11 views
6

: web.config sahiptir- "Ağ yolu bulunamadı" Ben ASP bir veritabanı (ODBC üzerinden Oracle) güncellemeye çalışıyorum

<%@ 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 

%> 

:

<connectionStrings> 
    <add name="ODBCNAME" connectionString="server=ExampleServerName;" providerName="System.Data.Odbc" /> 
</connectionStrings> 
Bunu yürütmek zaman

Ben objCOnn.Open() on line hata alıyorum: ODBC veri kaynağı oluşturulur

System.ComponentModel.Win32Exception: The network path was not found. 

, test ve o ile çalışan tek başına uygulamaları (kapalı kaynak) ve bağlantıyı ODBC Ayarları aracılığıyla çalıştırabilir.

Bu veritabanına kodumdan nasıl bağlanabilirim? Ya da bu sorunu nasıl ayıklayabilirim? ODBC kullanmayı çalışıyorsanız

+0

Veritabanınızı 1433 numaralı bağlantı noktasına telnet edebiliyor musunuz? –

+0

@ Oracle bağlantısını sunucudaki odbc kurulumundan test edebilirim, çalışır. –

cevap

2

Oracle zor bir yaratık olabilir.

İlk olarak, ODBC kullanıyorsanız SqlConnection yerine OdbcConnection kullanın. MSDN yukarıdaki bağlantıdan uyarlanan

See docs from Microsoft

örnek kod:

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) 

Sonra, ben (AKA, ODP.NET Oracle.DataAccess.dll) .NET için Oracle veri sağlayıcısı kullanmanızı tavsiye sağlanır Oracle Client (her zaman varsayılan olarak yüklenmez; özel yükleme yapmanız gerekebilir), ODBC'den daha iyi performans gösterebilir ve Oracle'a özgü işlevleri kullanabilir. Olduğu söyleniyor, ODBC kullanmak istiyorsanız (ve tabii ki bu gibi genel bazı nedenler vardır), okuyun:

Diğer önerilere ek olarak, mimarilerin eşleştiğinden emin olun. Bu sadece 64 bitlik bir kutudaysanız geçerlidir.

64 bit işletim sistemi ve 64-bit uygulaması DSN tanımlamak için 64 bit ODBC kullanmanız gerekiyorsa C:\Windows\System32\odcad32.exe

64-bit işletim sistemi ve 32 bit uygulaması tanımlamak için 32 bit ODBC kullanmanız gerekiyorsa DSN C:\Windows\SysWOW64\odbcad32.exe

(Evet, isimler gERÇEKTEN kafa karıştırıcı! SysWOW64 temelde 64-bit Çevreyi 32-bit taklit anlamına gelir. başka bir sorun, Microsoft ilk etapta şey odbcad32 adında olduğu .. belki odbcad daha iyi olurdu, ama muhtemelen o anda 32-bit ve 16-bit versiyonu arasında ayrım yapmak zorunda kaldılar .. sadece bir tahmin)

Eğer 32-bit işletim sistemi daha sonra odbcad32.exe'un yeri varsayılan konumdur (64-bit'de 64-bit) ve varsayılan olarak PATH'unuzdadır.

32-bit ve 64-bit çalışır uygulama o zaman iki DSN, Alternatif proje ayarlarında projenizin mimarisini ayarlayabilirsiniz 64.

için 32 diğeri tanımlamak gerekir. Varsayılan olarak Any CPU olabilir (Bence) yerel tercih etmek anlamına gelir .. bu yüzden eğer 64-bit işletim sistemi üzerine inşa ederseniz, x86 ya da bir şey değiştirmediğiniz sürece 64-bit exe alırsınız. Visual Studio 2015'te, prefer 32-bit onay kutusunu da kullanabilirsiniz.

Aynı şey Oracle istemcisi için de geçerli: eşleşen mimariyi kullanmanız gerekir.

+0

Yan yorum: açıkçası - veri erişim kodunu .aspx dosyalarına vb. Arkasındaki kod budur. Bu şekilde yeniden daha iyi olacak. Gerekirse, veri erişim katmanlarınızı web uyumlu kodda sarın ve/veya veritabanından web uygulamanıza veri sağlamak için iş nesnelerini ve nesne serileştirmesini kullanın. – nothingisnecessary

+0

güvenlik notları: Sorunuza argümanlar iletmek için 'OdbcCommand' sınıfını kullanın. Unutmayın ki, odbc adlandırılmış değişkenler yerine '' 'yer tutucuları kullanır (' @ var1'). – DanielK

+0

İyi nokta - veritabanı tabanlı uygulamalar ile başlayan yeni başlayanlar için, kaplanacak çok yeni bir zemin var. Bağlantı değişkenleri, SQL enjeksiyonuna karşı korunmaya yardımcı olur, kodunuzu daha temiz hale getirir ve - Oracle'ın durumunda en azından - yürütme planlarını yeniden kullanarak sorguların katı ayrışmasını azaltarak CPU kullanımını azaltır. Bununla birlikte, kod gösteri amaçlı olarak basit tutulur - çünkü bağlantı bu sorunun ilgili kısmıdır. – nothingisnecessary

0

, kendi Data Source doğru ayarlanmış olduğundan emin olun Ayrıca System.Data.Odbc

kullanmak gerekir. Bu tüm farkı yaratacak.

Bu değişiklikleri denemeden önce, size daha fazla yardım sağlamak zor olacaktır. Ne ile geldiğini bize bildirin ve ihtiyacınız olursa size yardımcı olmaktan memnuniyet duyarız.

İlgili konular