क्लोजर - डेटाबेस
डेटाबेस कार्यक्षमता का उपयोग करने के लिए, कृपया पहले डाउनलोड करना सुनिश्चित करें jdbc files निम्नलिखित यूआरएल से - https://codeload.github.com/clojure/java.jdbc/zip/master
आपको एक जिप फाइल मिलेगी जिसमें क्लूजुर के लिए आवश्यक ड्राइवर हैं जो डेटाबेस से जुड़ने की क्षमता रखते हैं। एक बार जब जिप फाइल निकाली जाती है, तो अनज़िप्ड लोकेशन को अपने क्लासपाथ में जोड़ना सुनिश्चित करें।
डेटाबेस कनेक्टिविटी के लिए मुख्य फाइल नामक फाइल है jdbc.clj स्थान में क्लोजर / जावा।
क्लोजर jdbc कनेक्टर विभिन्न प्रकार के डेटाबेस का समर्थन करता है, जिनमें से कुछ निम्नलिखित हैं।
- H2Database
- Oracle
- Microsoft SQL सर्वर
- MySQL
- PostgreSQL
हमारे उदाहरण में, हम एक उदाहरण के रूप में MySQL DB का उपयोग करने जा रहे हैं।
डेटाबेस के संबंध में क्लोजर में निम्नलिखित ऑपरेशन संभव हैं।
डेटाबेस कनेक्शन
MySQL डेटाबेस से कनेक्ट करने से पहले, निम्नलिखित के बारे में सुनिश्चित करें -
आपने एक डेटाबेस बनाया है TESTDB।
आपने TESTDB में एक टेबल EMPLOYEE बनाया है।
इस तालिका में FIRST_NAME, LAST_NAME, AGE, SEX और INCOME हैं।
उपयोगकर्ता ID "testuser" और पासवर्ड "test123" TESTDB तक पहुँचने के लिए निर्धारित हैं।
सुनिश्चित करें कि आपने 'mysql jar फ़ाइल' डाउनलोड की है और फ़ाइल को अपने वर्गपथ में जोड़ा है।
आप MySQL बेसिक्स को समझने के लिए MySQL ट्यूटोरियल से गुजरे हैं ।
वाक्य - विन्यास
क्लोजर में संबंध बनाने के लिए सिंटैक्स निम्नलिखित है।
(def connection_name {
:subprotocol “protocol_name”
:subname “Location of mysql DB”
:user “username” :password “password” })
Parameters- 'connection_name' कनेक्शन को दिया जाने वाला नाम है। is सबप्रोटोकॉल ’कनेक्शन के लिए इस्तेमाल किया जाने वाला प्रोटोकॉल है। डिफ़ॉल्ट रूप से हम mysql प्रोटोकॉल का उपयोग करेंगे। 'सबनाम' डेटाबेस नाम के साथ mysql db से जुड़ने का url है। 'उपयोगकर्ता' डेटाबेस से जुड़ने के लिए उपयोग किया जाने वाला उपयोगकर्ता नाम है। 'पासवर्ड' डेटाबेस से जुड़ने के लिए उपयोग किया जाने वाला पासवर्ड है।
Return Value - यह एक कनेक्शन स्ट्रिंग प्रदान करेगा, जिसका उपयोग बाद के mysql संचालन में किया जा सकता है।
निम्न उदाहरण दिखाता है कि सूचना स्कीमा में तालिकाओं से कैसे कनेक्ट किया जाए और तालिका के सभी डेटा को पुनर्प्राप्त करें।
उदाहरण
(ns test.core
(:require [clojure.java.jdbc :as sql]))
(defn -main []
(def mysql-db {
:subprotocol "mysql"
:subname "//127.0.0.1:3306/information_schema"
:user "root"
:password "shakinstev"})
(println (sql/query mysql-db
["select table_name from tables"]
:row-fn :table_name)))
डेटा छोड़ना
किसी भी डेटाबेस पर डेटा को क्वेरी करने का अर्थ है डेटाबेस से कुछ उपयोगी जानकारी प्राप्त करना। एक बार डेटाबेस कनेक्शन स्थापित हो जाने के बाद, आप इस डेटाबेस में एक प्रश्न बनाने के लिए तैयार हैं। निम्नलिखित सिंटैक्स है जिसके द्वारा क्लॉज्योर का उपयोग करके डेटा को क्वेर किया जा सकता है।
वाक्य - विन्यास
clojure.java.jdbc/query dbconn
["query"]
:row-fn :sequence
Parameters- 'dbconn' डेटाबेस से जुड़ने के लिए उपयोग किए जाने वाले कनेक्शन का नाम है। 'क्वेरी' डेटाबेस से डेटा लाने के लिए उपयोग किया जाने वाला क्वेरी स्ट्रिंग है। 'अनुक्रम' डेटाबेस से प्राप्त डेटा की सभी पंक्तियों को डिफ़ॉल्ट रूप से है और एक अनुक्रम के रूप में लौटाया जाता है। फिर अनुक्रम पर आवश्यक संचालन यह देखने के लिए किया जा सकता है कि डेटा क्या लाया गया है।
Return Value - यह एक अनुक्रम लौटाएगा, जिसमें क्वेरी ऑपरेशन से डेटा की पंक्तियां होंगी।
निम्न उदाहरण दिखाता है कि कर्मचारी तालिका से कैसे जुड़ें और तालिका में पंक्तियों के पहले_नाम कॉलम को कैसे लाएं।
उदाहरण
(ns test.core
(:require [clojure.java.jdbc :as sql]))
(defn -main []
(def mysql-db {
:subprotocol "mysql"
:subname "//127.0.0.1:3306/testdb"
:user "root"
:password "shakinstev"})
(println (sql/query mysql-db
["select first_name from employee"]
:row-fn :first_name)))
उपरोक्त कोड से, हम यह देख सकते हैं
"कर्मचारी से प्रथम_नाम चुनें" क्वेरी स्ट्रिंग के रूप में पारित की जाती है।
: First_name अनुक्रम है, जो कि भ्रूण के संचालन के परिणामस्वरूप वापस किया जाता है।
यदि हम मानते हैं कि हमारे डेटाबेस में सिर्फ एक पंक्ति है जिसमें जॉन का पहला_नाम मान है, तो निम्नलिखित कार्यक्रम का आउटपुट होगा।
(John)
डेटा सम्मिलित करना
जब आप अपने रिकॉर्ड को डेटाबेस तालिका में बनाना चाहते हैं तो इसकी आवश्यकता होती है। निम्नलिखित सिंटैक्स है जिसके द्वारा क्लॉज्योर का उपयोग करके डेटा डाला जा सकता है। यह का उपयोग करके किया जाता है‘insert!’ समारोह।
वाक्य - विन्यास
clojure.java.jdbc/insert!
:table_name {:column_namen columnvalue}
Parameters- ': table_name' उस तालिका का नाम है जिसमें प्रविष्टि बनाने की आवश्यकता है। '{: column_namen columnvalue}' सभी स्तंभ नामों और मूल्यों का एक मानचित्र है, जिसे तालिका में एक पंक्ति के रूप में जोड़ने की आवश्यकता है।
Return Value - यदि प्रविष्टि को सफलतापूर्वक बनाया जाता है तो यह शून्य हो जाएगा।
निम्न उदाहरण दिखाता है कि testdb डेटाबेस में कर्मचारी तालिका में रिकॉर्ड कैसे डाला जाए।
उदाहरण
(ns test.core
(:require [clojure.java.jdbc :as sql]))
(defn -main []
(def mysql-db {
:subprotocol "mysql"
:subname "//127.0.0.1:3306/testdb"
:user "root"
:password "shakinstev"})
(sql/insert! mysql-db
:employee {:first_name "John" :last_name "Mark" :sex "M" :age 30 :income 30}))
यदि आप अब अपने MySQL डेटाबेस और कर्मचारी तालिका की जांच करते हैं, तो आप देखेंगे कि उपरोक्त पंक्ति को सफलतापूर्वक तालिका में डाला जाएगा।
डेटा हटाना
पंक्तियों का उपयोग करके किसी तालिका से हटाए जा सकते हैं ‘delete!’समारोह। इस ऑपरेशन को कैसे किया जा सकता है, इस पर सिंटैक्स निम्नलिखित है।
वाक्य - विन्यास
clojure.java.jdbc/delete!
:table_name [condition]
Parameters- ': table_name' उस तालिका का नाम है जिसमें प्रविष्टि बनाने की आवश्यकता है। 'कंडीशन' वह स्थिति है जिसका उपयोग यह निर्धारित करने के लिए किया जाता है कि किस पंक्ति को तालिका से हटाने की आवश्यकता है।
Return Value - इससे डिलीट हुई पंक्तियों की संख्या वापस आ जाएगी।
निम्न उदाहरण दिखाता है कि testdb डेटाबेस में कर्मचारी तालिका से रिकॉर्ड कैसे हटाया जाए। उदाहरण इस स्थिति के आधार पर तालिका से एक पंक्ति हटाता है कि आयु 30 के बराबर है।
उदाहरण
(ns test.core
(:require [clojure.java.jdbc :as sql]))
(defn -main []
(def mysql-db {
:subprotocol "mysql"
:subname "//127.0.0.1:3306/testdb"
:user "root"
:password "shakinstev"})
(println (sql/delete! mysql-db
:employee ["age = ? " 30])))
यदि आपके पास एक रिकॉर्ड था जिसमें 30 के मूल्य के बराबर उम्र के साथ एक पंक्ति थी, तो उस पंक्ति को हटा दिया जाएगा।
डेटा अपडेट कर रहा है
पंक्तियों का उपयोग करके तालिका से अद्यतन किया जा सकता है ‘update!’समारोह। इस ऑपरेशन को कैसे किया जा सकता है, इस पर सिंटैक्स निम्नलिखित है।
वाक्य - विन्यास
clojure.java.jdbc/update!
:table_name
{setcondition}
[condition]
Parameters- ': table_name' उस तालिका का नाम है जिसमें प्रविष्टि बनाने की आवश्यकता है। ond सेटकंडिशन ’वह कॉलम है जिसे किसी मानचित्र के संदर्भ में अद्यतन किए जाने की आवश्यकता होती है। 'कंडीशन' वह स्थिति है जिसका उपयोग यह निर्धारित करने के लिए किया जाता है कि किस पंक्ति को तालिका से हटाने की आवश्यकता है।
Return Value - इससे अपडेट की गई पंक्तियों की संख्या वापस आ जाएगी।
निम्न उदाहरण दिखाता है कि testdb डेटाबेस में कर्मचारी तालिका से रिकॉर्ड कैसे हटाया जाए। उदाहरण इस स्थिति के आधार पर तालिका से एक पंक्ति को अद्यतन करता है कि आयु 30 के बराबर है और आय के मूल्य को 40 तक अपडेट करता है।
(ns test.core
(:require [clojure.java.jdbc :as sql]))
(defn -main []
(def mysql-db {
:subprotocol "mysql"
:subname "//127.0.0.1:3306/testdb"
:user "root"
:password "shakinstev"})
(println (sql/update! mysql-db
:employee
{:income 40}
["age = ? " 30])))
यदि आपके पास एक रिकॉर्ड है, जिसमें 30 के मूल्य के बराबर उम्र के साथ एक पंक्ति थी, तो उस पंक्ति को अपडेट किया जाएगा, जिसमें आय का मूल्य 40 पर सेट किया जाएगा।
लेन-देन
लेन-देन तंत्र हैं जो डेटा स्थिरता सुनिश्चित करते हैं। लेन-देन के निम्नलिखित चार गुण हैं -
Atomicity - या तो लेनदेन पूरा हो जाता है या कुछ भी नहीं होता है।
Consistency - लेन-देन सुसंगत अवस्था में शुरू होना चाहिए और सिस्टम को सुसंगत अवस्था में छोड़ना चाहिए।
Isolation - लेन-देन के मध्यवर्ती परिणाम वर्तमान लेनदेन के बाहर दिखाई नहीं देते हैं।
Durability - एक बार लेनदेन करने के बाद, सिस्टम की विफलता के बाद भी प्रभाव लगातार बना रहता है।
उदाहरण
निम्नलिखित उदाहरण से पता चलता है कि क्लोजर में लेनदेन को कैसे लागू किया जाए। लेन-देन में किए जाने वाले किसी भी संचालन को अंदर एम्बेड करने की आवश्यकता होती है‘with-dbtransaction’ खंड।
(ns test.core
(:require [clojure.java.jdbc :as sql]))
(defn -main []
(def mysql-db {
:subprotocol "mysql"
:subname "//127.0.0.1:3306/testdb"
:user "root"
:password "shakinstev"})
(sql/with-db-transaction [t-con mysql-db]
(sql/update! t-con
:employee
{:income 40}
["age = ? " 30])))