6.1 RowSet चा परिचय

तुम्हाला आधीच माहित आहे की, JDBC मानक जवळजवळ 20 वर्षे जुने आणि थोडे जुने आहे. नवीन प्रकार आणि नवीन वर्ग हळूहळू त्यात जोडले जात आहेत, परंतु हे सर्वत्र सुंदरपणे केले जाऊ शकत नाही. आणि त्यापैकी एक ठिकाण म्हणजे ResultSet .

डेटाबेस अधिक कार्यक्षम बनविला जाऊ शकतो, परंतु रिझल्टसेट इंटरफेस खराब फिट आहे. याव्यतिरिक्त, आम्ही स्पष्टपणे त्याच्या वस्तू कोठेही तयार करत नाही, ते आम्हाला द्वारे परत केले जातात executeQuery().

जेडीबीसीच्या निर्मात्यांनी फार काळ विचार केला नाही आणि एक यंत्रणा तयार केली जी आधीच्या प्रत्येक गोष्टीशी पूर्णपणे समांतर आहे. आणि तो RowSet म्हणून ओळखला जाऊ लागला .

येथे त्याचे मुख्य फायदे आहेत:

  • RowSet ResultSet इंटरफेसचा विस्तार करतो, त्यामुळे त्याची कार्ये ResultSet च्या तुलनेत अधिक शक्तिशाली आहेत.
  • RowSet टेबल डेटाद्वारे अधिक लवचिकपणे नेव्हिगेट करतो आणि पुढे आणि मागे स्क्रोल करू शकतो.
  • रोसेट कॅशे केलेला डेटा ठेवतो जो कनेक्शन बंद झाल्यानंतरही वापरला जाऊ शकतो.
  • रोसेट नवीन कनेक्शन पद्धतीचे समर्थन करते, तुम्ही कनेक्शनशिवाय डेटाबेसशी कनेक्ट करू शकता. हे XML डेटा स्रोत वाचण्यास देखील समर्थन देते.
  • रोसेट डेटा फिल्टरला सपोर्ट करतो.
  • RowSet टेबल जॉईन ऑपरेशनला देखील सपोर्ट करतो.

रोसेट प्रकार:

  • CachedRowSet
  • FilteredRowSet
  • JdbcRowSet
  • RowSet मध्ये सामील व्हा
  • WebRowSet

6.2 RowSet ऑब्जेक्ट तयार करणे

कामाचे ऑब्जेक्ट मिळवण्याचे तीन वेगवेगळे मार्ग आहेत.

प्रथम, शास्त्रीय पद्धतीने मिळवलेल्या रिझल्टसेटमधील डेटाने ते भरले जाऊ शकते .

उदाहरणार्थ, आम्ही CachedRowSet वापरून ResultSet डेटा कॅशे करू शकतो :


Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery("SELECT * FROM user");
 
RowSetFactory factory = RowSetProvider.newFactory();
CachedRowSet crs = factory.createCachedRowSet();
crs.populate(results);		// Use ResultSet to populate

दुसरे, तुम्ही त्यासाठी तुमचे स्वतःचे डेटाबेस कनेक्शन तयार करून पूर्णपणे स्वयंपूर्ण RowSet ऑब्जेक्ट तयार करू शकता:


JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet();
rowSet.setUrl("jdbc:mysql://localhost:3306/test");
rowSet.setUsername("root");
rowSet.setPassword("secret");
 
rowSet.setCommand("SELECT * FROM user");
rowSet.execute();

आणि तिसरे म्हणजे, तुम्ही RowSet ला आधीपासून अस्तित्वात असलेल्या कनेक्शनशी कनेक्ट करू शकता:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
JdbcRowSet rowSet = new JdbcRowSetImpl(con);

rowSet.setCommand("SELECT * FROM user");
rowSet.execute();

6.3 RowSet सह काम करण्याची उदाहरणे

उदाहरण एक: कॅशिंग .

चला एक कोड लिहू या जेथे आम्ही सर्व डेटा कॅशे करण्यासाठी CachedRowSet वापरतो आणि तो आधीपासून बंद असलेल्या कनेक्शनमधून वाचतो:

Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery("SELECT * FROM user");

RowSetFactory factory = RowSetProvider.newFactory();
CachedRowSet crs = factory.createCachedRowSet();
crs.populate(results);	// Use ResultSet to populate

connection.close();		// Close the connection

// Cache data is still available
while(crs.next()) {
  	System.out.println(crs.getString(1)+"\t"+ crs.getString(2)+"\t"+ crs.getString(3));
}

उदाहरण दोन: RowSet द्वारे पंक्ती बदलणे :

// Connect to the database
 CachedRowSet crs = rsf.createCachedRowSet();
 crs.setUrl("jdbc:mysql://localhost/test");
 crs.setUsername("root");
 crs.setPassword("root");
 crs.setCommand("SELECT * FROM user");
 crs.execute();

// This type of operation can only change standalone RowSet
// First, move the pointer to an empty (new) string, the current position is remembered
 crs.moveToInsertRow();
 crs.updateString(1, Random.nextInt());
 crs.updateString(2, "Clone" + System.currentTimeMillis());
 crs.updateString(3, "Female");
 crs.insertRow();  // Add the current (new) line to the rest of the lines
 crs.moveToCurrentRow(); // Return a pointer to the line where it was before insertion

 crs.beforeFirst();
 while(crs.next()) {
 	System.out.println(crs.getString(1) + "," + crs.getString(2) + "," + crs.getString(3));
}

// And now we can upload all our changes to the database
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
con.setAutoCommit(false); // Needed for synchronization
crs.acceptChanges(con);// Synchronize data to database

हे कसे कार्य करते याबद्दल आपल्याला स्वारस्य असल्यास, आपण अधिकृत दस्तऐवजीकरणामध्ये विषय वाचू शकता. सध्या माझे कार्य फक्त ते काय आहे ते सांगणे आहे.