6.1 RowSet அறிமுகம்
உங்களுக்கு ஏற்கனவே தெரியும், JDBC தரநிலை கிட்டத்தட்ட 20 ஆண்டுகள் பழமையானது மற்றும் கொஞ்சம் காலாவதியானது. புதிய வகைகள் மற்றும் புதிய வகுப்புகள் மெதுவாக சேர்க்கப்படுகின்றன, ஆனால் இதை எல்லா இடங்களிலும் அழகாக செய்ய முடியாது. அந்த இடங்களில் ஒன்று ResultSet ஆகும் .
தரவுத்தளத்தை மிகவும் திறமையானதாக மாற்ற முடியும், ஆனால் ResultSet இடைமுகம் மிகவும் பொருத்தமற்றது. கூடுதலாக, நாம் எங்கும் அதன் பொருள்களை வெளிப்படையாக உருவாக்கவில்லை, அவை எங்களிடம் திருப்பி அனுப்பப்படுகின்றன executeQuery()
.
ஜேடிபிசியை உருவாக்கியவர்கள் நீண்ட நேரம் யோசிக்கவில்லை, முன்பு இருந்த எல்லாவற்றிற்கும் முற்றிலும் இணையான ஒரு பொறிமுறையை உருவாக்கினர். அது RowSet என அறியப்பட்டது .
அதன் முக்கிய நன்மைகள் இங்கே:
- RowSet ResultSet இடைமுகத்தை நீட்டிக்கிறது, எனவே அதன் செயல்பாடுகள் ResultSet இன் செயல்பாடுகளை விட அதிக சக்தி வாய்ந்தவை.
- RowSet அட்டவணை தரவு மூலம் மிகவும் நெகிழ்வாக வழிசெலுத்துகிறது மற்றும் முன்னும் பின்னுமாக உருட்டும்.
- இணைப்பு மூடப்பட்ட பிறகும் பயன்படுத்தக்கூடிய தற்காலிக சேமிப்பில் உள்ள தரவை RowSet பராமரிக்கிறது.
- RowSet புதிய இணைப்பு முறையை ஆதரிக்கிறது, நீங்கள் இணைப்பு இல்லாமல் தரவுத்தளத்துடன் இணைக்க முடியும். இது XML தரவு மூலத்தைப் படிப்பதையும் ஆதரிக்கிறது.
- RowSet தரவு வடிகட்டியை ஆதரிக்கிறது.
- RowSet டேபிள் சேரும் செயல்பாடுகளையும் ஆதரிக்கிறது.
ரவுசெட் வகைகள்:
- CachedRowSet
- வடிகட்டிய ரோசெட்
- JdbcRowSet
- JoinRowSet
- 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
இது எவ்வாறு செயல்படுகிறது என்பதில் நீங்கள் ஆர்வமாக இருந்தால், அதிகாரப்பூர்வ ஆவணத்தில் தலைப்பைப் படிக்கலாம். இந்த நேரத்தில் என் பணி அது என்னவென்று சொல்வதுதான்.
GO TO FULL VERSION