सबसे अच्छा समाधान जो मैंने पाया वह था Oracle डेटा एक्सेस क्लाइंट लाइब्रेरी का उपयोग करना, और कनेक्शन स्ट्रिंग में संपूर्ण TNS नाम प्रविष्टि शामिल करना। यह परियोजना को वेब सर्वर, क्लिकऑन, आदि पर आसानी से प्रकाशित करने की अनुमति देता है।
आपके प्रोजेक्ट में काम कर रहे Oracle ड्राइवर को सेट करने के लिए आवश्यक कदम यहां दिए गए हैं:
1) '.NET के लिए Oracle डेटा प्रदाता' पैकेज से DLL प्राप्त करें
इस स्थान से इंस्टॉलर फ़ाइल डाउनलोड करें:http://www.oracle. com/technetwork/topics/dotnet/index-085163.html
मैंने आगे बढ़कर विजुअल स्टूडियो के लिए ओरेकल डेवलपर टूल्स के साथ पूर्ण 200 एमबी ओडीएसी स्थापित किया, लेकिन आपको इस डाउनलोड से केवल चार डीएलएल की आवश्यकता है। (आप संपूर्ण इंस्टॉल प्रक्रिया से गुजरने के बजाय, उन्हें सीधे इंस्टॉलर पैकेज से निकालने में सक्षम हो सकते हैं, या शायद छोटे डाउनलोड में से एक में वे सभी शामिल हैं।)
2) अपने प्रोजेक्ट में डीएलएल का संदर्भ लें
Oracle डेटा एक्सेस क्लाइंट की स्थापना निर्देशिका खोजें और निम्नलिखित चार DLL को अपने प्रोजेक्ट के मूल में खींचें:
- Oracle.DataAccess.dll
- oci.dll
- oraciicus11.dll
- OraOps11w.dll
आउटपुट निर्देशिका में कॉपी करें सेट करें Oracle.DataAccess.dll को छोड़कर सभी फाइलों को हमेशा कॉपी करें ।
प्रोजेक्ट . के अंतर्गत --> संदर्भ जोड़ें... , ब्राउज़ करें . पर क्लिक करें टैब करें और Oracle.DataAccess.dll फ़ाइल चुनें।
3) पूर्ण कनेक्शन स्ट्रिंग वाले ड्राइवर का उपयोग करें (वैकल्पिक)
ताकि टीएनएस नाम फ़ाइलों के बारे में चिंता करने की ज़रूरत न हो, जिन मशीनों पर एप्लिकेशन को तैनात किया गया था, मैंने पूरी परिभाषा को फ़ाइल में रखा है जैसा कि दिखाया गया है connectionstrings.com . यह कनेक्शन स्ट्रिंग को थोड़ा भारी बनाता है, लेकिन बहुत सारे TNS नाम फ़ाइल सिरदर्द को हटा देता है जो मैं पहले अनुभव कर रहा था:
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=servername)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));User Id=username;Password=********;
यहाँ पूरी कक्षा है जिसका उपयोग मैं ड्राइवर का परीक्षण करने के लिए करता था:
using System;
using System.Data;
using Oracle.DataAccess.Client;
static class Program
{
[STAThread]
static void Main()
{
TestOracle();
}
private static void TestOracle()
{
string connString =
"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=servername)(PORT=1521)))" +
"(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+
"User Id=username;Password=********;";
using (OracleConnection conn = new OracleConnection(connString))
{
string sqlSelect = "SELECT * FROM TEST_TABLE";
using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
{
var table = new DataTable();
da.Fill(table);
if (table.Rows.Count > 1)
Console.WriteLine("Successfully read oracle.");
}
}
}
}