ग्रूवी - डेटाबेस
Groovy का groovy-sql मॉड्यूल वर्तमान जावा की JDBC तकनीक पर एक उच्च-स्तरीय अमूर्तता प्रदान करता है। ग्रूवी एसक्यूएल एपीआई विभिन्न प्रकार के डेटाबेस का समर्थन करता है, जिनमें से कुछ नीचे दिखाए गए हैं।
- HSQLDB
- Oracle
- एस क्यू एल सर्वर
- MySQL
- MongoDB
हमारे उदाहरण में, हम एक उदाहरण के रूप में MySQL DB का उपयोग करने जा रहे हैं। MySQL को Groovy के साथ उपयोग करने के लिए, MySQL jdbc जार फ़ाइल को mysql साइट से डाउनलोड करने का पहला काम है।The forMySQL का मैट नीचे दिखाया जाएगा।
mysql-connector-java-5.1.38-bin
फिर अपने वर्कस्टेशन में उपरोक्त जार फ़ाइल को क्लासपाथ में जोड़ना सुनिश्चित करें।
डेटाबेस कनेक्शन
MySQL डेटाबेस से जुड़ने से पहले, फॉलोइंग सुनिश्चित करें -
- आपने एक डेटाबेस बनाया है TESTDB।
- आपने TESTDB में एक टेबल EMPLOYEE बनाया है।
- इस तालिका में FIRST_NAME, LAST_NAME, AGE, SEX और INCOME हैं।
- उपयोगकर्ता ID "testuser" और पासवर्ड "test123" TESTDB तक पहुँचने के लिए निर्धारित हैं।
- सुनिश्चित करें कि आपने mysql jar फ़ाइल डाउनलोड की है और फ़ाइल को अपने classpath में जोड़ा है।
- आप MySQL बेसिक्स को समझने के लिए MySQL ट्यूटोरियल से गुजरे हैं
निम्न उदाहरण दिखाता है कि MySQL डेटाबेस "TESTDB" से कैसे कनेक्ट किया जाए।
import java.sql.*;
import groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB',
'testuser', 'test123', 'com.mysql.jdbc.Driver')
// Executing the query SELECT VERSION which gets the version of the database
// Also using the eachROW method to fetch the result from the database
sql.eachRow('SELECT VERSION()'){ row ->
println row[0]
}
sql.close()
}
}
इस स्क्रिप्ट को चलाते समय, यह निम्नलिखित परिणाम उत्पन्न कर रहा है -
5.7.10-log
The Sql.newInstance method is used to establish a connection to the database.
डेटाबेस तालिका बनाना
डेटाबेस से कनेक्ट करने के बाद अगला कदम हमारे डेटाबेस में टेबल बनाना है। निम्न उदाहरण दिखाता है कि ग्रूवी का उपयोग करके डेटाबेस में एक टेबल कैसे बनाया जाए। Sql वर्ग का निष्पादन विधि डेटाबेस के खिलाफ स्टेटमेंट निष्पादित करने के लिए उपयोग किया जाता है।
import java.sql.*;
import groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test123', 'com.mysql.jdbc.Driver')
def sqlstr = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
sql.execute(sqlstr);
sql.close()
}
}
ऑपरेशन डालें
जब आप अपने रिकॉर्ड को डेटाबेस तालिका में बनाना चाहते हैं तो इसकी आवश्यकता होती है।
उदाहरण
निम्न उदाहरण कर्मचारी तालिका में एक रिकॉर्ड सम्मिलित करेगा। कोड को एक ट्रायल कैच ब्लॉक में रखा गया है ताकि यदि रिकॉर्ड सफलतापूर्वक निष्पादित हो जाए, तो लेनदेन डेटाबेस के लिए प्रतिबद्ध है। यदि लेनदेन विफल हो जाता है, तो एक रोलबैक किया जाता है।
import java.sql.*;
import groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test123', 'com.mysql.jdbc.Driver')
sql.connection.autoCommit = false
def sqlstr = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully committed")
}catch(Exception ex) {
sql.rollback()
println("Transaction rollback")
}
sql.close()
}
}
मान लीजिए कि आप एक मापदंड के आधार पर कुछ पंक्तियों का चयन करना चाहते हैं। निम्न कोडेश आप मानों की खोज के लिए एक पैरामीटर प्लेसहोल्डर को कैसे जोड़ सकते हैं। उपरोक्त उदाहरण को मापदंडों में लेने के लिए भी लिखा जा सकता है जैसा कि निम्नलिखित कोड में दिखाया गया है। $ प्रतीक का उपयोग एक पैरामीटर को परिभाषित करने के लिए किया जाता है जिसे तब मानों द्वारा प्रतिस्थापित किया जा सकता है जब sql स्टेटमेंट निष्पादित होता है।
import java.sql.*;
import groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test123', 'com.mysql.jdbc.Driver')
sql.connection.autoCommit = false
def firstname = "Mac"
def lastname ="Mohan"
def age = 20
def sex = "M"
def income = 2000
def sqlstr = "INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX,
INCOME) VALUES " + "(${firstname}, ${lastname}, ${age}, ${sex}, ${income} )"
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully committed")
} catch(Exception ex) {
sql.rollback()
println("Transaction rollback")
}
sql.close()
}
}
पढ़ें ऑपरेशन
किसी भी डेटाबेस पर पढ़ें ऑपरेशन का मतलब डेटाबेस से कुछ उपयोगी जानकारी प्राप्त करना है। एक बार हमारा डेटाबेस कनेक्शन स्थापित हो जाने के बाद, आप इस डेटाबेस में एक प्रश्न बनाने के लिए तैयार हैं।
रीड ऑपरेशन, वर्ग वर्ग के प्रत्येक विधि का उपयोग करके किया जाता है।
वाक्य - विन्यास
eachRow(GString gstring, Closure closure)
दिए गए SQL क्वेरी को परिणाम सेट की प्रत्येक पंक्ति के साथ दिए गए क्लोजर को कॉल करता है।
Parameters
Gstring - एसक्यूएल बयान जिसे निष्पादित करने की आवश्यकता है।
Closure- रीड ऑपरेशन से पुनर्प्राप्त पंक्तियों को संसाधित करने के लिए क्लोजर स्टेटमेंट। दिए गए SQL क्वेरी को परिणाम सेट की प्रत्येक पंक्ति के साथ दिए गए क्लोजर को कॉल करता है।
निम्न कोड उदाहरण दिखाता है कि कर्मचारी तालिका से सभी रिकॉर्ड कैसे प्राप्त करें।
import java.sql.*;
import groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test123', 'com.mysql.jdbc.Driver')
sql.eachRow('select * from employee') {
tp ->
println([tp.FIRST_NAME,tp.LAST_NAME,tp.age,tp.sex,tp.INCOME])
}
sql.close()
}
}
उपरोक्त कार्यक्रम से उत्पादन होगा -
[Mac, Mohan, 20, M, 2000.0]
अद्यतन अद्यतन
किसी भी डेटाबेस पर अद्यतन ऑपरेशन का मतलब एक या एक से अधिक रिकॉर्ड को अद्यतन करना है, जो पहले से ही डेटाबेस में उपलब्ध हैं। निम्न प्रक्रिया SEX वाले सभी रिकॉर्ड को 'M' के रूप में अपडेट करती है। यहां, हम एक वर्ष के भीतर सभी पुरुषों के एजीई को बढ़ाते हैं।
import java.sql.*;
import groovy.sql.Sql
class Example {
static void main(String[] args){
// Creating a connection to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test@123', 'com.mysql.jdbc.Driver')
sql.connection.autoCommit = false
def sqlstr = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M'"
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully committed")
}catch(Exception ex) {
sql.rollback()
println("Transaction rollback")
}
sql.close()
}
}
DELETE ऑपरेशन
DELETE ऑपरेशन की आवश्यकता तब होती है जब आप अपने डेटाबेस से कुछ रिकॉर्ड हटाना चाहते हैं। निम्नलिखित EMPLOYEE से सभी रिकॉर्ड को हटाने की प्रक्रिया है, जहां AGE 20 से अधिक है।
import java.sql.*;
import groovy.sql.Sql
class Example {
static void main(String[] args) {
// Creating a connection to the database
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',
'test@123', 'com.mysql.jdbc.Driver')
sql.connection.autoCommit = false
def sqlstr = "DELETE FROM EMPLOYEE WHERE AGE > 20"
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully committed")
}catch(Exception ex) {
sql.rollback()
println("Transaction rollback")
}
sql.close()
}
}
लेन-देन करना
लेन-देन एक तंत्र है जो डेटा स्थिरता सुनिश्चित करता है। लेन-देन के निम्नलिखित चार गुण हैं -
Atomicity - या तो लेनदेन पूरा हो जाता है या कुछ भी नहीं होता है।
Consistency - लेन-देन सुसंगत अवस्था में शुरू होना चाहिए और सिस्टम को सुसंगत अवस्था में छोड़ना चाहिए।
Isolation - लेन-देन के मध्यवर्ती परिणाम वर्तमान लेनदेन के बाहर दिखाई नहीं देते हैं।
Durability - एक बार लेनदेन करने के बाद, सिस्टम की विफलता के बाद भी प्रभाव लगातार बना रहता है।
लेन-देन को कैसे लागू किया जाए, इसका एक सरल उदाहरण यहां दिया गया है। हमने इस उदाहरण को DELETE ऑपरेशन के अपने पिछले विषय से पहले ही देख लिया है।
def sqlstr = "DELETE FROM EMPLOYEE WHERE AGE > 20"
try {
sql.execute(sqlstr);
sql.commit()
println("Successfully committed")
}catch(Exception ex) {
sql.rollback()
println("Transaction rollback")
}
sql.close()
संचालन करें
प्रतिबद्ध ऑपरेशन वह है जो डेटाबेस को ऑपरेशन के साथ आगे बढ़ने के लिए कहता है और डेटाबेस में सभी परिवर्तनों को अंतिम रूप देता है।
हमारे उपरोक्त उदाहरण में, यह निम्नलिखित कथन द्वारा प्राप्त किया गया है -
sql.commit()
रोलबैक ऑपरेशन
यदि आप एक या अधिक परिवर्तनों से संतुष्ट नहीं हैं और आप उन परिवर्तनों को पूरी तरह से वापस लेना चाहते हैं, तो रोलबैक विधि का उपयोग करें। हमारे उपरोक्त उदाहरण में, यह निम्नलिखित कथन द्वारा प्राप्त किया गया है -
sql.rollback()
डेटाबेस को डिस्कनेक्ट कर रहा है
डेटाबेस कनेक्शन को डिस्कनेक्ट करने के लिए, बंद विधि का उपयोग करें।
sql.close()