Monday, October 14, 2024

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | Database Programming With ADO.NET – Best Info

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट परिचय (Introduction)ए.डी.यू. या एडू डॉट नेट लायब्रेरी का वह संकलन है जो आपको कई डाटाबेस प्रणालियों का इकट्ठा एक्सेस विजुअल स्टूडिया डॉट नेट में उपलब्ध कराता है। डाटाबेस प्रणालियों में आप किसी भी डाटाबेस प्रणाली यथा एस. क्यू.एल., अरिकल का उपयोग कर अपने एप्लिकेशन में डाटाबेस को जोड़ सकते हैं। इस अध्याय में हम आपके साथ एडू डॉट नेट की चर्चा करेंगे। एडू डॉट नेट असंयोजित डाटा आर्किटेक्चर (disconnected data architecture) पर आधारित है। संयोजित डाटा आर्किटेक्चर के बारे में भी इस अध्याय में आपको बताया गया है।

इस पार्ट-3 में हम जानेगे :- डाटाबेस ऑब्जेक्ट तथा एडू डॉट नेट (Dabase Objects and ADO.Net), कनेक्शन ऑब्जेक्ट (Comection Object), कमाण्ड ऑब्जेक्ट (Command Object), कमाण्ड के साथ कार्य करना (Writing with Commands)

डाटाबेस ऑब्जेक्ट तथा एडू डॉट नेट (Dabase Objects and ADO.Net)

इस खण्ड में हम विजुअल बेसिक कोड से एडू डॉट नेट ऑब्जेक्ट्स के साथ सीधे-सीधे कार्य कर रहे हैं। इसके लिए हम डाटाबेस कनेक्शन, डाटा अडरेटर, डाटा टेबल, डाटाबेस इत्यादि का निर्माण करते हैं। इस खण्ड में हम यह देखेंगे कि किस प्रकार टेबल बनाते हैं तथा उन्हें डाटाबेस में रखते हैं।

हम यहाँ यह भी देखेंगे कि किस प्रकार अपना खुद का कनेक्शन ऑपरेटर बनाकर डाटाबेस को कनेक्ट करते हैं, कैसे डाटा अडरेटर से एस. क्यू. एम. स्टेटमेन्ट्स रखते हैं तथा किस प्रकार डाटाबेस के मध्य डाटा रिलेशन्स स्थापित करते हैं। डाटाबेस के साथ मुख्य रूप से कार्य करने के लिए निम्नलिखित ऑब्जेक्ट की आवश्यकता होती है :

  1. कनेक्शन ऑब्जेक्ट
  2. कमाण्ड ऑब्जेक्ट
  3. डाटा अडरेटर ऑब्जेक्ट
  4. डाटा सेट ऑब्जेक्ट

कनेक्शन ऑब्जेक्ट (Comection Object)

कनेक्शन ऑब्जेक्ट लिंक को सोर्स डाटाबेस के साथ व्यवस्थित करता है। इसमें सबसे ज्यादा उपयोग होने वाला प्रोपर्टी ConectionString है जिसमें डाटाबेस को ढूंढने के लिए आवश्यक सूचना होती है। इसके महत्वपूर्ण मेथड Open तथा Close होते हैं। इस डॉट नेट के साथ कार्य करते समय दो प्रमुख प्रकार के कनेक्शन ऑब्जेक्ट यथा OleDbConnection तथा SqlConnection होते हैं।

OleDbConnection ऑब्जेक्ट ओ. एल. ई. डी. बी. डाटा प्रोवाइडर के कनेक्शन को सपोर्ट करता है। व्यवहारिक रूप से आप OLE DB कनेक्शन का उपयोग माइक्रोसॉफ्ट एस. क्यू. एल सर्वर के अतिरिक्त सभी डाटा प्रोवाइडर के साथ उपयोग कर सकते हैं। SqlConnection ऑब्जेक्ट एस. क्यू. एल. सर्वर डाटा सॉर्स साथ कनेक्शन को सपोर्ट करता है।

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग तथा कार्य | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi
डाटाबेस प्रोग्रामिंग विद एडू डॉट नेट पार्ट-3 | डाटा बेस प्रोग्रामिंग क्या है? एवं उपयोग | एडीओ का परिचय ADO.NET | Database Programming With ADO.NET In Hindi

कमाण्ड ऑब्जेक्ट (Command Object)

कमाण्ड ऑब्जेक्ट कई Execute मेथड को व्यक्त करता है जिसका उपयोग कर आप इच्छित कार्य कर सकते हैं। डाटा के स्ट्रीम (प्रवाह) के रूप में परिणामों को लौटाते समय ExecuteReader का उपयोग DataReader ऑब्जेक्ट को लौटाने में होता है। ExecuteScalar का उपयोग कर सिंगलनन (Singleton) मान लौटाते हैं। इसी प्रकार ExecuteNonQuery का उपयोग कर वैसे कमाण्ड को एक्जिक्यूट करते हैं, जो पंक्तियों को रिटर्न नहीं करते हैं। 

यह भी देखें :  जानिए डेटा रिकवरी क्या होता है | Best Data Recovery in Hindi

कमाण्ड ऑब्जेक्ट्स का उपयोग जब आप संग्रहित प्रोसीजर के साथ करते हैं तब आप कमाण्ड ऑब्जेक्ट आप कमाण्ड के Parameters प्रॉपर्टी का उपयोग इनपुट तथा आउटपुट पैरामीटर को एक्सेस करने तथा मान को लौटाने में Command Type प्रोपर्टी Stored Procedure के साथ सेट कर सकते हैं। Stored Procedure के Command Type के साथ Execute Reader कॉल करते समय रिटर्न मान तथा आउटपुट पैरामीटर एक्सेसिबल तब तक नहीं होगा जब तक कि कर सकते हैं।

Parameters प्रॉपर्टी का उपयोग Execute मेथड को कॉल किए बगैर भी किया जा सकता है। किन्तु DataReader बंद न हो। निम्नलिखित कोड एस. क्यू एल. सर्वर के Northwind डाटाबेस से कैटेगरी की सूची (List of Categories) रिटने करने हेतु कैसे SqlCommand ऑब्जेक्ट का निर्माण करते हैं यह दर्शाता है :
Dim command As SqlCommand = New SqlCommand.
(“SELECT Category ID Category Name FROM dbo. Categories”. nwind conn)

कमाण्ड के साथ कार्य करना (Writing with Commands)

डाटा सोर्स के साथ कनेक्शन स्थापित करने के बाद आप कमाण्ड्स को एक्जिक्यूट कर सकते हैं तथा Cornmand ऑब्जेक्ट का उपयोग कर डाटा सोर्स से परिणाम लौटा सकते हैं। आप Command कंस्ट्रक्ट का उपयोग कर कमाण्ड का निर्माण कर सकते हैं, जो एस. क्यू. एल स्टेटमेण्ट का ऐच्छिक ऑर्ग्यूमेन्स लेकर डाटा सोर्स, Connection ऑब्जेक्ट तथा Transaction ऑब्जेक्ट पर एक्जिक्यूट करता है।

आप Connection ऑब्जेक्ट के Create Command मेथड का उपयोग कर एक विशेष कनेक्शन के लिए कमाण्ड का निर्माण कर सकते हैं। Command ऑब्जेक्ट का एस. क्यू. एल. स्टेटमेन्ट पर क्वेरी किया जा सकता है तथा CommandText प्रोपर्टी का उपयोग कर संशोधित भी किया जा सकता है।

डॉट नेट फ्रेमवर्क में सम्मिलित प्रत्येक डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का एक Command ऑब्जेक्ट होता है। ओ. एल. ई . डी. बी. (OLE DB) के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर से OleDbCommand ऑब्जेक्ट होता है। एस. क्यू. एल. सर्वर के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का SqlCommand ऑब्जेक्ट होता है। ओ. डी. बी. सी. (ODBC) के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का OdbeCommand ऑब्जेक्ट होता है तथा ऑरकल (Oracle) के डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर का OracleCommand ऑब्जेक्ट होता है।

1- ओ. एल. ई. डी. बी कमाण्ड क्लास (OleDbCommand Class) – OleDbCommand क्लास एस. क्यू. स्टेटमेन्ट या स्टोरड प्रॉसीजर को व्यक्त करता है जो एक डाटा सोर्स के बदले एक्जिक्यूट करता है। जब OleDbCommand में निम्नलिखित मेथड होते हैं, जो डाटासोर्स पर कमाण्ड एक्जिक्यूट करता है।
ExecuteReader
ExecuteReader कमाण्ड को एक्जिक्यूट करता है, जो पंक्तियों को वापस करता है। ExecuteReader का तब परिणाम आपके इच्छानुसार नहीं हो सकता है जब आप SQL SET स्टेटमेन्ट जैसे कमाण्ड को एक्जिक्यूट करवाते हैं।
ExecuteNonQuery
ExecuteNonQuery SQL INSERT, DELETE, UPDATE तथा SET स्टेटमेन्ट जैसे कमाण्ड को एक्जिक्यूट करता है।
ExecuteScalar
ExecuteScalar सिंगल मान प्राप्त करता है। उदाहरण के लिए, डाटाबेस से कुल (aggregate) मान को प्राप्त करने के लिए इसका उपयोग किया जा सकता है।

आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा OleDbCommand ऑब्जेक्ट को रियूज कर सकते हैं। किन्तु आपको नये या पिछले कमाण्ड को एक्जिक्यूट करने के लिए OleDbDataReader को बंद करना आवश्यक होगा।

यदि कोई गम्भीर OleDbExecption OleDbCommand एक्जिक्यूट कर रहे मेथड के द्वारा जनित होता है तब OleDbConnection कनेक्शन बंद हो सकता है परन्तु उसे फिर से खोलकर उसके साथ कार्य किया जा सकता है। 
निम्नलिखित कोड OleDbCommand का उपयोग कर OleDbDataAdapter तथा OleDbConnection के साथ एक्सेस कनेक्शन डाटाबेस में पंक्तियों का चयन करता है। भरे गये (Filled) डाटासेट उसके बाद लौटता है। इसमें इनिशिअलाइजड डाटासेट है। स्ट्रिंग, क्वेरी स्ट्रिंग होता है, जो एक एस. क्यू. एल. स्टेटमेन्ट ही होता है तथा स्ट्रिंग सोर्स डाटाबेस टेबल का नाम है।

यह भी देखें :  डाटाबेस प्रोग्रामिंग विद एडू. नेट पार्ट-2 | Database Programming With ADO.NET - Best Info

Public Sub ReadMyData (ByVal connectionString As String)
Dim Query String As String = “SELECT OrderID, CustomerID FROM ORDERS”
Using Connection As New OleDbConnection (connectionString)
Dim Command As New OleDbCommand (query String. Connection)
Connection.Open()
Dim reader As OleDbDataReader=command.ExecuteReader()
While reader. Read ()
Console. WriteLine (reader. GetInt32 (0). ToString U+ “.” + reader. GetString (1)

End While
reader. Close()
End Using
End Sub

2 एस. क्यू. एल. कमाण्ड क्लास (SqlCommand Class)
SqlCommand क्लास Transact-SQL स्टेटमेन्ट अथवा संग्रहित प्रोसीजर को व्यक्त करता है जो एस. क्यू. एल. सर्वर डाटाबेस के बदले में एक्जिक्यूट होता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। SqlCommand के इन्स्टैन्सेज (instances) के बनने के पश्चात् read/write प्रोपर्टी उनके प्रारम्भिक मान में सेट हो जाता है। SqlCommand के निम्नलिखित मेथड होते हैं, जो एस. क्यू. एल. सर्वर पर कमाण्ड को एक्जिक्यूट करने के लिए होता है –

BeginExecuteNonQuery – यह Transact-SQL स्टेटमेन्ट अथवा संग्रहित प्रोसीजर के असिंक्रोनस एक्जिक्यूशन को शुरू करता है, जो इस SqlCommad के द्वारा वर्णन किया जा सकता है जो सामान्यतः INSERT, DELETE, UPDATE तथा SET स्टेटमेन्ट्स जैसे कमाण्ड को एक्जिक्यूट करता है। BeginExecuteNonQuery के प्रत्येक कॉल को EndExecuteNoQuery कॉल के साथ ही होना चाहिए जो सामान्यतः एक अलग थ्रेड पर ऑपरेशन को समाप्त करता है।

BeginExecuteReader – BeginExecuteReader Transact SQL स्टेटमेन्ट अथवा संग्रहित प्रोसीजर के असिंक्रोनस एक्ज़िक्यूशन को शुरू करता है, एक या अधिक रिजल्ट सेट्स को प्राप्त करता है। जो इस SqlCommand के द्वारा वर्णित होता है तथा सर्वर BeginExecuteReader के प्रत्येक कॉल को EndExecuteReader कॉल के साथ ही होना चाहिए जो सामान्यतः एक अलग थ्रेड पर ऑपरेशन को समाप्त करता है।

BeginExecuteXmlReaderTransact-SQL स्टेटमेण्ट अथवा संगृहीत प्रोसीजर के असिंक्रोनस एक्जिक्यूशन को शुरू करता है जो इस SqlCommand के द्वारा वर्णन किया जाता है। BeginExecute XmlReader के प्रत्येक कॉल को EndExecuteXmlReader कॉल के साथ ही होना चाहिए जो सामान्यतः एक अलग थ्रेड पर ऑपरेशन को समाप्त करता है तथा XmlReader ऑब्जेक्ट लौटाता है।

ExecuteReader – ExecuteReader वैसे कमाण्ड को एक्जिक्यूट करता है जो पंक्तियों को लौटाते हैं। बेहतर परफॉरमेन्स के लिए ExecuteReader Transact-SQL sp_executeSql सिस्टम संग्रहीत प्रोसीजर का उपयोग कर कमाण्ड को इनवोक करता है। अत: ExecuteReader आपके इच्छानुसार हो सकता है परिणाम न दें यदि इसका उपयोग Transact-SQL SET स्टेटमेण्ट्स जैसे कमाण्ड को एक्जिक्यूट करने में हो। 

ExecuteNonQuery – Transact-SQL, INSERT, DELETE, UPDATE तथा SET स्टेटमेण्ट जैसे कमाण्ड को एक्जिक्यूट करता है।

ExecuteScalarडाटाबेस से सिंगल मान (उदाहरणार्थ पूर्ण मान) प्राप्त करने में होता है।

ExecuteXmlReader – Connection को CommandText भेजता है तथा XmlReader ऑब्जेक्ट का निर्माण करता है। आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा SqlCommand ऑब्जेक्ट को रिमूव कर सकते हैं किन्तु आपको नये या पिछले कमाण्ड को एक्जिक्यूट करने से पहले SqiDataReader बंद करना आवश्यक होगा।

यदि SqlCommand को एक्जिक्यूट कर रहे मेथड SqlException जनित करते हैं और यदि इसकी गम्भरता स्तर (severity level) 19 या कम हो तब तक SqlConnection चालू रहता है। जब गम्भीरता स्तर (severity level) 20 या अधिक होता है तब सर्वर सामान्यत: SqlConnection को बंद कर देता है। किन्तु यूजर कनेक्शन को दोबारा खोल सकते हैं तथा कनटीनयु (continue) कर सकते हैं।

निम्नलिखित उदाहरण एक SqlConnection, एक SqlCommand तथा एक SqiDataReader को बनाता है। यह उदाहरण पूरे डाटा को पढ़ता है इसे कंसोल में लिखता है। अंततः यह उदाहरण SqlConnection को बंद करता है।

यह भी देखें :  डाटाबेस प्रोग्रामिंग विद एडू.नेट पार्ट-4 | Database Programming With ADO.NET - Best Info

Public Sub ReadOrderData (ByVal connectionString As String)
Dim query String As String = “SELECT OrderID, CustomerID FROM dbo.Orders;”
Using connection As New SqlConnection (connectionString)
Dim command As New SqlCommand (query String, connection)
connection.Open ()

Dim reader As SqlDataReader = command.ExecuteReader()
Try
While reader. Read ()
Console. WriteLine(String.Format(“{0}, {1}”, reader (0), reader (1)))

End While

Finally
reader.Close ()

End Try

End Using

End Sub

3- OdbcCommand क्लास – OdbcCommand क्लास डाटा सोर्स के बदले एक्जिक्यूट करने हेतु एस.क्यू.एल. स्टेटमेण्ट अथवा संग्रहीत प्रॉसीजर को व्यक्त करता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। इस क्लास के द्वारा डाटा सोर्स के बदले कमाण्ड्स को एक्जिक्यूट करने हेतु कई मेथड होते हैं।

ExecuteReader – उन कमाण्ड को एक्जिक्यूट करता है जो रो (rows) लौटाते हैं।
ExecuteNonQuery – SQL INSERT, DELETE, UPDATE तथा SET स्टेटमेण्ट जैसे कमाण्ड को एक्जिक्यूट करता है।

ExecuteScalar – डाटाबेस में एक सिंगल मान यथा कोई पूर्ण मान (aggregate value) प्राप्त करता है।

आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा OdbeCommand ऑब्जेक्ट को रियूज कर सकते हैं। किन्तु किसी नये कमाण्ड या पिछले कमाण्ड को एक्जिक्यूट करने से पहले OdbcDataReader को बंद करना आवश्यक होता है। यदि कमाण्ड के एक्जिक्यूशन के कारण कोई गम्भीर OdbcException यथा एस. क्यू. एल. सर्वर गम्भीरता स्तर 20 या अधिक उत्पन्न होता है तो OdbeConnection बंद हो सकता है। परन्तु यूजर इसे पुन: खोल कर कार्य कर सकता है।

निम्नलिखित कोड उदाहरण ExecuteReader मेथड तथा OdbcCommand क्लास का उपयोग OdbcDataReader तथा OdbcConnection क्लास के साथ टेबल से पंक्ति का चयन करने में उपयोग करता है-

Public Sub InsertRow(ByVal connectionString As String, ByVal insertSQL As String)
Using Connection As New OdbcConnection(connectionString)
Dim command As New OdbcCommand(insertSQL, connection)
insertSQL स्ट्रिंग में एक एस. क्यू. एल. स्टेटमेण्ट है।
जो सोर्स टेबल में एक नयी पंक्ति प्रविष्ट करता है।

Try
connection.Open() ‘कनेक्शन को शुरू करता है
Command.ExecutionNonQuery ) insert कमाण्ड को एक्जिक्यूट करता है
Catch ex As Exception
Console.WriteLine (ex.Message)
End Try

End Using ‘इसके बाद कनेक्शन स्वतः ही बंद हो जाता है।
End Sub

4- OracleCommand क्लासOracleCommand क्लास डाटा सोर्स के बदले एक्जिक्यूट करने हेतु एस. क्यू. एल. स्टेटमेण्ट अथवा संगृहीत प्रोसीजर को व्यक्त करता है। इस क्लास को इनहेरिट नहीं किया जा सकता है। OracleCommand डाटा सोर्स के बदले कमाण्ड को एक्जिक्यूट करने के लिए कई मेथड उपलब्ध कराते हैं।

ExecuteReader – वैसे कमाण्ड को एक्जिक्यूट करता है जो पंक्तियाँ (rows) लौटाते हैं।

ExecuteOracleNonQuery- कनेक्शन के बदले एस. क्यू. एल. स्टेटमेण्ट को एक्जिक्यूट करता है तथा प्रभावित पंक्तियों की संख्या लौटाता है।

ExecuteNonQuery – SQL INSERT, DELETE, UPDATE तथा SET स्टेटमेण्ट्स जैसे कमाण्ड को एक्जिक्यूट करता है।
ExecuteScalar – सिंगल मान (यथा पूर्ण मान) को डॉट नेट फ्रेमवर्क डाटा टाइप के रूप में डाटाबेस से पुनः प्राप्त करता

ExecuteOracleScalar – सिंगल मान (यथा पूर्ण मान) को ऑरेकल विशिष्ट डाटा टाइप के रूप में डाटाबेस से लौटाता है। आप CommandText प्रॉपर्टी को रिसेट कर सकते हैं तथा OracleCommand ऑब्जेक्ट को रियूज कर सकते हैं। यदि कमाण्ड के एक्जिक्यूशन के कारण कोई गम्भीर OracleException उत्पन्न होता है तो OracleConnection बंद हो सकता है। परन्तु यूजर इसे पुनः खोलकर कार्य शुरू कर सकता है।

नोट : अन्य डॉट नेट फ्रेमवर्क डाटा प्रोवाइडर (एस.क्यू.एल. सर्वर, ओ.एल.ई.डी.बी. तथा ओ.डी.बी.सी.) के Command ऑब्जेक्ट के विपरीत OracleCommand ऑब्जेक्ट CommandTimeout प्रॉपर्टी को सपोर्ट नहीं करता है। कमाण्ड टाइमआउट को सेट करने का यहाँ कोई प्रभाव नहीं होता है तथा लौटाया गया मान शून्य होता है। 

निम्नलिखित कोड उदाहरण OracleCommand के ExecuteReader मेथड को OracleDataReader तथा Oracle Connection
के साथ उपयोग कर टेबल से पंक्तियों का चयन करता है।

Public Sub ReadMyData(ByVal connectionString As String)
Dim query String As String = “SELECT EmpNo DeptNo FROM Scott. Emp”
Using connection As New OracleConnection(connectionString)
Dim command As New OracleCommand(queryString, connection)
connection.Open()
Dim reader As OracleDataReader = command.ExecuteReader()
Try
While reader.Read()
Console. WriteLine (reader.GetInt32(0) & “,” & reader.GetInt32 (1))
End While

Finally
reader.Close() ‘ पढ़ना समाप्त होने के बाद इसे (Close को) कॉल करना आवश्यक होता है।
End Try
End Using
End Sub

DbCommand क्लास – यह क्लास डॉट नेट फ्रेमवर्क संस्करण 2.0 में नया है। यह डाटा सोर्स के बदले एक्जिक्यूट होने वाले एस.क्यू.एल. स्टेटमेण्ट अथवा संगृहीत प्रोसीजर को व्यक्त करता है। यह विशिष्ट क्लासों के लिए एक आधार क्लास उपलब्ध कराता है जो कमाण्ड को व्यक्त करता है। इसका प्रारूप यह है- Dim instance As DbCommand
Rate this post
Suraj Kushwaha
Suraj Kushwahahttp://techshindi.com
हैलो दोस्तों, मेरा नाम सूरज कुशवाहा है मै यह ब्लॉग मुख्य रूप से हिंदी में पाठकों को विभिन्न प्रकार के कंप्यूटर टेक्नोलॉजी पर आधारित दिलचस्प पाठ्य सामग्री प्रदान करने के लिए बनाया है।

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

0FansLike
0FollowersFollow
0SubscribersSubscribe
spot_img
- Advertisement -

Latest Articles