JDBC ResultSet: தரவை மீட்டெடுக்க Java ResultSet ஐ எவ்வாறு பயன்படுத்துவது

தரவை மீட்டெடுக்க JDBC ResultSet ஐ எவ்வாறு பயன்படுத்துவது என்பதை இந்தப் பயிற்சி விளக்குகிறது. எடுத்துக்காட்டுகளுடன் ResultSetMetaData மற்றும் DatabaseMetaData இடைமுகங்களைப் பற்றியும் அறிந்துகொள்வோம்:

JDBC DriverManager JDBC டுடோரியல் தொடரின் டுடோரியலில், JDBCஐ எவ்வாறு பயன்படுத்துவது என்பதைக் கற்றுக்கொண்டோம். DriverManager மற்றும் அதன் முறைகள், JDBC PreparedStatement in Java Applications.

இந்த டுடோரியலில், JDBC இல் மீதமுள்ள இடைமுகங்களைப் பற்றி விவாதிப்போம். எங்கள் முந்தைய பயிற்சிகளில் அறிக்கை, தயார்நிலை அறிக்கை மற்றும் அழைக்கக்கூடிய அறிக்கை இடைமுகங்களை நாங்கள் உள்ளடக்கியுள்ளோம்.

இங்கே, JDBC ResultSet, ResultSetMetaData மற்றும் DatabaseMetaData இடைமுகங்கள், அவற்றின் முறைகள் மற்றும் ஜாவா நிரலில் உள்ள முறைகளை எவ்வாறு பயன்படுத்துவது என்பது பற்றி அறிந்துகொள்வோம்.

JDBC ResultSet இடைமுகம்

ResultSet இடைமுகம் java.sql தொகுப்பில் உள்ளது. ஜாவா திட்டத்தில் SQL அறிக்கைகளை செயல்படுத்திய பிறகு தரவுத்தள அட்டவணையில் இருந்து திரும்பப் பெறும் தரவைச் சேமிக்க இது பயன்படுகிறது. ResultSet இன் ஆப்ஜெக்ட் முடிவு தரவில் கர்சர் புள்ளியை பராமரிக்கிறது. இயல்பாக, கர்சர் முடிவு தரவின் முதல் வரிசைக்கு முன் நிலைநிறுத்தப்படுகிறது.

அடுத்த() முறையானது கர்சரை அடுத்த நிலைக்கு முன்னோக்கி நகர்த்த பயன்படுகிறது. மேலும் பதிவுகள் இல்லை என்றால் அது FALSE எனத் தரும். எந்தவொரு அறிக்கைப் பொருட்களையும் பயன்படுத்தி executeQuery() முறையை அழைப்பதன் மூலம் இது தரவை மீட்டெடுக்கிறது. இது அறிக்கை அல்லது தயார்நிலை அறிக்கை அல்லது அழைக்கக்கூடிய ஸ்டேட்மெண்ட் பொருளாக இருக்கலாம். தயாரிக்கப்பட்ட அறிக்கை, மற்றும்நெடுவரிசையின் அட்டவணையின் திட்டப் பெயரை வழங்குகிறது int getColumnCount() இது ResultSet இன் நெடுவரிசைகளின் எண்ணிக்கையை வழங்குகிறது boolean isAutoIncrement(int Column) கொடுக்கப்பட்ட நெடுவரிசை தானியங்கு அதிகரிப்பு எனில் அது சரி எனத் தரும், இல்லையெனில் தவறு பூலியன் isCaseSensitive(int Column) கொடுக்கப்பட்ட நெடுவரிசை கேஸ் சென்சிட்டிவ் எனில் அது உண்மை என்று திரும்பும், இல்லையெனில் தவறு

ResultSetMetaData எடுத்துக்காட்டு

package com.STH.JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class ResultSetMetaData_Example { public static void main(String[] args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub String QUERY= " select * from employee_details"; Class.forName("oracle.jdbc.driver.OracleDriver"); try(Connection conn = DriverManager.getConnection("jdbc:oracle:thin:system/pass123@localhost:1521:XE")) { Statement statemnt1 = conn.createStatement(); ResultSet rs1 =null; rs1 = statemnt1.executeQuery(QUERY); ResultSetMetaData rsmd = rs1.getMetaData(); System.out.println(" We are using ResultSetMetaData "); System.out.println("No: of Columns: "+ rsmd.getColumnCount()); System.out.println("ColumnName of Column 1: "+ rsmd.getColumnName(1)); System.out.println("Data Type of Column 2: " + rsmd.getColumnTypeName(2)); System.out.println("Table Name of the Column 1: " + rsmd.getTableName(1)); System.out.println("Schema Name of the Column 1: " + rsmd.getSchemaName(1)); } } }

அவுட்புட்:

விளக்கம்:

மேலே உள்ள திட்டத்தில், ResultSetMetaData இடைமுகத்தில் getColumnCount(),getColumnName(), getColumnTypeName(), getTableName() மற்றும் getSchemaName() முறைகளை செயல்படுத்தியுள்ளோம்.

DatabaseMetaData

DatatabaseMetaData போன்ற DatatabaseMetaData பற்றிய தகவல்களை வழங்குகிறது. டேட்டாபேஸ் பெயர், டேட்டாபேஸ் பதிப்பு மற்றும் பல>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 28> ஸ்ட்ரிங் getDriverVersion() இது JDBC இயக்கி பதிப்பு எண்ணை வழங்குகிறது ஸ்ட்ரிங் getUserName() நாம் பயன்படுத்தும் தரவுத்தளத்தின் பயனர்பெயரை இது வழங்குகிறது ஸ்ட்ரிங் getDatabaseProductName() அது திரும்பும் நாம் இருக்கும் தரவுத்தளத்தின் பெயர்பயன்படுத்தி ஸ்ட்ரிங் getDatabaseProductVersion() இது நாம் பயன்படுத்தும் தரவுத்தளத்தின் பதிப்பு எண்ணை வழங்குகிறது ResultSet getSchemas() இது இணைக்கப்பட்ட தரவுத்தளத்தில் உள்ள திட்டங்களின் பெயர்களை வழங்குகிறது String getStringFunctions() இது இணைக்கப்பட்ட தரவுத்தளத்தில் கிடைக்கும் சரம் செயல்பாடுகளின் பட்டியலை வழங்குகிறது ஸ்ட்ரிங் getTimeDateFunctions() இது இணைக்கப்பட்ட தரவுத்தளத்தில் உள்ள நேரம் மற்றும் தேதி செயல்பாடுகளின் பட்டியலை வழங்குகிறது ஸ்ட்ரிங் getURL() இது தரவுத்தளத்திற்கான URLஐ வழங்குகிறது Boolean isReadOnly() தரவுத்தளம் படிக்க மட்டும் பயன்முறையில் உள்ளதா என்பதை இது வழங்குகிறது Boolean supportsBatchUpdates() இது தரவுத்தள ஆதரவு தொகுதி புதுப்பிப்புகளை வழங்குகிறது Boolean supportsSavepoints() சேவ்பாயின்ட்களை டேட்டாபேஸ் ஆதரிக்கிறதா என்பதை இது வழங்குகிறது பூலியன் சப்போர்ட்ஸ்ஸ்டேட்மென்ட்பூலிங்() டேட்டாபேஸ் ஸ்டேட்மென்ட் பூலிங்கை ஆதரிக்கிறதா என்பதை இது வழங்குகிறது Boolean supportsStoredProcedures() டேட்டாபேஸ் சேமிக்கப்பட்ட நடைமுறைகளை ஆதரிக்கிறதா என்பதை இது வழங்குகிறது Boolean supportsOuterJoins() இது தரவுத்தளமானது Outer Join ஐ ஆதரிக்கிறதா என்பதை வழங்குகிறது

இங்கே, DatabaseMetaData இடைமுகத்தின் சில முக்கியமான முறைகளை பட்டியலிட்டுள்ளோம். நீங்கள் குறிப்பிடலாம்DatabaseMetaData இடைமுகத்தில் கிடைக்கும் அனைத்து முறைகளையும் நீங்கள் பார்க்கக்கூடிய Oracle இன் அதிகாரப்பூர்வ தளம்.

DatabaseMetaData எடுத்துக்காட்டு:

package com.STH.JDBC; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class DatabaseMetaData_Example { public static void main(String[] args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:system/pass123@localhost:1521:XE"); DatabaseMetaData dbmd = conn.getMetaData(); System.out.println("Using DatabaseMetaData"); System.out.println("Driver Name: " + dbmd.getDriverName()); System.out.println("Driver Version: "+ dbmd.getDriverVersion()); System.out.println("UserName of the Database: " + dbmd.getUserName()); System.out.println("Database Product Name:" + dbmd.getDatabaseProductName()); System.out.println("Database Product Version: " + dbmd.getDatabaseProductVersion()); System.out.println("List of String Functions in the Database: " + dbmd.getStringFunctions()); System.out.println("List of Time & Date functions in the Database: " + dbmd.getTimeDateFunctions()); System.out.println("URL of the Database: " + dbmd.getURL()); System.out.println("Database is read - only? " +dbmd.isReadOnly()); System.out.println("Support Batch Updates? " + dbmd.supportsBatchUpdates()); System.out.println("Support savepoints? " + dbmd.supportsSavepoints()); System.out.println("Support Statement Pooling? "+ dbmd.supportsStatementPooling()); System.out.println("Support Stored Procedures? " + dbmd.supportsStoredProcedures()); System.out.println("Support Outer Join? "+ dbmd.supportsOuterJoins()); } }

அவுட்புட்:

விளக்கம்:

மேலே உள்ள திட்டத்தில், getDriverName(), getDriverVersion() ஐப் பயன்படுத்தியுள்ளோம்/ செயல்படுத்தியுள்ளோம் , getUserName(), getDatabaseProductName(), getDatabaseProductVersion(), getStringFunctions(), getTimeDateFunctions(), getURL(), isReadOnly(), supportsBatchUpdates(), supportsStatementPooling(), supportsSavepoints(P) முறைகளை ஆதரிக்கிறது DatabaseMetaData Interface.

குறிப்பிட வேண்டிய புள்ளிகள்:

  • JDBC ResultSet இடைமுகம் தரவுத்தளத்தில் இருந்து தரவைச் சேமித்து அதை எங்கள் ஜாவா திட்டத்தில் பயன்படுத்த பயன்படுகிறது.
  • அப்டேட்XXX() முறைகளைப் பயன்படுத்தி தரவைப் புதுப்பிக்க ResultSetஐப் பயன்படுத்தலாம்.
  • முடிவுத் தரவின் முதல் வரிசைக்கு முன் கர்சரை ResultSet ஆப்ஜெக்ட் சுட்டிக்காட்டுகிறது. அடுத்த() முறையைப் பயன்படுத்தி, ResultSet மூலம் மீண்டும் மீண்டும் செய்யலாம்.
  • ResultSet ஆப்ஜெக்ட்டில் மேலும் நகர்த்துவதற்கு ResultSet இன் வழிசெலுத்தல் முறைகள் எங்களிடம் உள்ளன
  • ResultMetaData போன்ற ResultSet பற்றிய கூடுதல் தகவலைப் பெறப் பயன்படுகிறது. நெடுவரிசையின் பெயர், நெடுவரிசைகளின் எண்ணிக்கை, நெடுவரிசையின் தரவு வகை, மற்றும் பல

    கே #1) என்ன பயன்ResultSet?

    Answer: ResultSet ஆனது DB இலிருந்து தரவைச் சேமிக்கவும் மீட்டெடுக்கவும் பயன்படுகிறது. executeQuery() முறை செயல்படுத்தப்பட்டதும், அது ResultSet ஆப்ஜெக்ட்டை வழங்கும். தர்க்கத்தைச் செயல்படுத்த, அந்த ResultSet ஆப்ஜெக்ட்டை நமது நிரலில் பயன்படுத்தலாம்.

    Q #2) ResultSet காலியாக உள்ளதா இல்லையா என்பதை எப்படிச் சரிபார்க்கலாம்?

    பதில்: IsResultSet காலியை சரிபார்க்க நீளம்(), அளவு() போன்ற முன் வரையறுக்கப்பட்ட முறைகள் எதுவும் இல்லை. அடுத்த() முறையைப் பயன்படுத்தி மீண்டும் சொல்லலாம், அது True எனத் திரும்பினால், அது காலியாக இல்லை, False எனத் தந்தால், ResultSet காலியாக உள்ளது என்று அர்த்தம்.

    Q #3) ResultSet சாத்தியமா? பூஜ்யமாக இருக்கலாம்?

    பதில்: இல்லை, executeQuery() முறையானது, ஒருபோதும் பூஜ்யமாக இல்லாத ResultSet ஆப்ஜெக்ட்டை வழங்குகிறது.

    Q #4) புதுப்பிக்கத்தக்க ResultSet என்றால் என்ன?

    பதில்: நெடுவரிசையில் தரவைப் புதுப்பிக்கவும், நெடுவரிசைகளில் தரவைச் செருகவும் மற்றும் வரிசைகளை நீக்கவும் புதுப்பிக்கக்கூடிய ResultSet ஆப்ஜெக்ட் பயன்படுத்தப்படுகிறது. ResultSet ஐ மேம்படுத்தக்கூடிய ஒன்றாக உருவாக்க, ஸ்க்ரோல் வகையை உணர்திறன் அல்லது உணர்வற்றதாகவும், CONCUR வகையை புதுப்பிக்கத்தக்கதாகவும் மாற்ற வேண்டும்.

    ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE.

    Q #5) இணைக்கப்பட்ட தரவுத்தளப் பெயரை எவ்வாறு பெறுவது?

    பதில்: DatabaseMetaData ஆப்ஜெக்ட்டின் getDatabaseProductName() முறையைப் பயன்படுத்தலாம்.

    முடிவு

    இந்த டுடோரியலில், என்னென்ன என்று விவாதித்தோம் ResultSet, ResultSetMetaData மற்றும் DatabaseMetaData இடைமுகங்கள் மற்றும் அவற்றின் முக்கிய முறைகள் பொதுவாக JDBC நிரல்களில் பயன்படுத்தப்படுகின்றன. நாமும் பார்த்திருக்கிறோம்ResultSet ஐப் பயன்படுத்தி DB இல் தரவை எவ்வாறு புதுப்பிப்பது. ResultSetMetadata ஆனது ResultSet பற்றிய நெடுவரிசைப் பெயர், நெடுவரிசை எண்ணிக்கை மற்றும் பல போன்ற தகவல்களைக் கொண்டுள்ளது.

    DatabaseMetaData தரவுத்தளத் தகவலைக் கொண்டுள்ளது.

    >

    CallableStatement interfaces என்பது அறிக்கை இடைமுகத்தின் துணை இடைமுகம் நெடுவரிசைகளின் தரவைப் பெற getX() முறையைப் பயன்படுத்தவும், முடிவுகளின் மூலம் மீண்டும் மீண்டும் செய்யும் போது, ​​X - என்பது நெடுவரிசையின் தரவு வகை. GetX() முறைகளைப் பயன்படுத்தி மதிப்புகளைப் பெற, நெடுவரிசைப் பெயர்கள் அல்லது குறியீட்டைப் பயன்படுத்தலாம்.
while(rs1.next()) { int empNum = rs1.getInt("empNum"); String lastName = rs1.getString("lastName"); String firstName = rs1.getString("firstName"); String email = rs1.getString("email"); String deptNum = rs1.getString("deptNum"); String salary = rs1.getString("salary"); System.out.println(empNum + "," +lastName+ "," +firstName+ "," +email +","+deptNum +"," +salary); } 

GetX() முறைகளில் நெடுவரிசைப் பெயருக்குப் பதிலாக நெடுவரிசையின் குறியீட்டு எண்ணையும் குறிப்பிடலாம்.

while(rs1.next()) { int empNum = rs1.getInt(1); String lastName = rs1.getString(2); String firstName = rs1.getString(3); String email = rs1.getString(4); String deptNum = rs1.getString(5); String salary = rs1.getString(6); System.out.println(empNum + "," +lastName+ "," +firstName+ "," +email +","+deptNum +"," +salary); } 

ResultSet வகைகள்

இயல்புநிலையில், முன்னோக்கிய திசையில் செயல்படுத்தப்பட்ட SQL அறிக்கையின் வெளியீடாக திரும்பிய ResultSet இல் தரவு/மதிப்புகளை மீண்டும் மீண்டும் செய்யலாம். Scrollable ResultSet ஐப் பயன்படுத்தி மற்ற திசைகளில் மதிப்புகளை மீண்டும் செய்யலாம். அறிக்கை, தயார்நிலை அறிக்கை மற்றும் அழைக்கக்கூடிய ஸ்டேட்மென்ட் பொருள்களை உருவாக்கும் போது ResultSet இன் வகை மற்றும் ஒத்திசைவைக் குறிப்பிடலாம்.

ResultSet இல் 3 வகைகள் உள்ளன. அவை:

  1. TYPE_FORWARD_ONLY: இது இயல்புநிலை விருப்பமாகும், இதில் கர்சர் தொடக்கத்திலிருந்து இறுதி வரை அதாவது முன்னோக்கி நகர்கிறது.
  2. TYPE_SCROLL_INSENSITIVE: இவ்வகையில், இது கர்சரை முன்னோக்கி மற்றும் பின்னோக்கி நகர்த்தச் செய்யும். சேமித்த தரவை மீண்டும் செய்யும் போது தரவுகளில் ஏதேனும் மாற்றங்களைச் செய்தால், DB இல் உள்ள தரவை யாராவது மாற்றினால் அது தரவுத்தொகுப்பில் புதுப்பிக்கப்படாது. ஏனெனில் தரவுத்தொகுப்பில் SQL வினவல் வரும் நேரத்திலிருந்து தரவு உள்ளதுதரவு.
  3. TYPE_SCROLL_SENSITIVE: இது TYPE_SCROLL_INSENSITIVE ஐப் போன்றது, SQL வினவல் தரவை வழங்கிய பிறகு எவரேனும் தரவைப் புதுப்பித்தால், அது தரவுத்தொகுப்பில் ஏற்படும் மாற்றங்களைப் பிரதிபலிக்கும்.

ResultSet Concurrency

ResultSet இல் 2 கன்கர்ன்சி முறைகள் உள்ளன. அவை:

  1. ResultSet.CONCUR_READ_ONLY: இது இயல்புநிலை கன்குரன்சி பயன்முறையாகும். ResultSet இல் உள்ள தரவை மட்டுமே நாம் படிக்க முடியும். புதுப்பிப்பு பொருந்தாது.
  2. ResultSet.CONCUR_UPDATABLE: ResultSet ஆப்ஜெக்ட்டில் தரவைப் புதுப்பிக்கலாம்.

சில தரவுத்தளங்கள் அனைத்திற்கும் ஒத்திசைவு பயன்முறையை ஆதரிக்காது ரிசல்ட் செட் வகைகள். அப்படியானால், அவர்கள் supportsResultSetConcurrency() முறையைப் பயன்படுத்தி நாம் விரும்பிய வகை மற்றும் ஒத்திசைவு பயன்முறையை ஆதரிக்கிறார்களா என்பதைச் சரிபார்க்க வேண்டும்.

ResultSet இடைமுகத்தில் உள்ள முறைகள்

ResultSet முறைகளில் 4 வகைகள் உள்ளன. அவை:

  1. நேவிகேஷனல் முறைகள்
  2. கெட்டர் முறைகள்
  3. அமைக்கும் முறைகள்
  4. இதர முறைகள்

முதலில், வழிசெலுத்தல் முறைகளைப் பற்றி விவாதிப்போம், பின்னர் மேலும் நகர்த்துவோம்.

#1) ஊடுருவல் முறைகள்

இந்த முறையானது தரவுத்தொகுப்பில் கர்சரை நகர்த்த பயன்படுகிறது.

  • பூலியன் முழுமையான(int row): இது அளவுருவில் குறிப்பிடப்பட்டுள்ள குறிப்பிட்ட வரிசைக்கு கர்சரை நகர்த்தவும், செயல்பாடு வெற்றிகரமாக இருந்தால் true என திருப்பி அனுப்பவும் பயன்படுகிறது.
  • செல்லாததுafterLast(): இது ResultSet கர்சரை கடைசி வரிசைக்குப் பிறகு நகர்த்தச் செய்கிறது.
  • Void beforeFirst(): இது ResultSet கர்சரை முதல் வரிசைக்கு முன் நகர்த்தச் செய்கிறது.
  • Boolean first(): இது ResultSet கர்சரை முதல் வரிசைக்கு நகர்த்தச் செய்கிறது. செயல்பாடு வெற்றியடைந்தால் அது True எனத் தரும், இல்லையெனில் False.
  • Boolean last(): இது ResultSet கர்சரை கடைசி வரிசைக்கு நகர்த்தச் செய்கிறது. செயல்பாடு வெற்றியடையும் பட்சத்தில் அது சரி எனத் திரும்பும், இல்லையெனில் தவறு.
  • Boolean next(): ResultSet கர்சரை அடுத்த வரிசைக்கு நகர்த்தச் செய்கிறது. அதிகமான பதிவுகள் இருந்தால் True என்றும், மேலும் பதிவுகள் இல்லாவிட்டால் False என்றும் வழங்கும்.
  • Boolean previous(): ResultSet கர்சரை முந்தைய வரிசைக்கு நகர்த்தச் செய்கிறது. அறுவை சிகிச்சை வெற்றிகரமாக இருந்தால் அது சரி எனத் தரும், இல்லையெனில் தவறு.
  • பூலியன் உறவினர்(): இது கர்சரை முன்னோக்கி அல்லது பின்தங்கிய திசையில் கொடுக்கப்பட்ட வரிசைகளின் எண்ணிக்கைக்கு நகர்த்துகிறது.
  • Int getRow(): ResultSet ஆப்ஜெக்ட் இப்போது சுட்டிக்காட்டும் தற்போதைய வரிசை எண்ணை இது வழங்குகிறது.
  • Void moveToCurrentRow(): இது கர்சரை மீண்டும் நகர்த்துகிறது தற்போதைய வரிசையானது தற்போது செருகும் வரிசையில் இருந்தால்.
  • Void moveToInsertRow(): இது வரிசையை தரவுத்தளத்தில் செருக குறிப்பிட்ட வரிசைக்கு கர்சரை நகர்த்துகிறது. இது தற்போதைய கர்சர் இருப்பிடத்தை நினைவில் கொள்கிறது. எனவே, செருகிய பின் கர்சரை தற்போதைய வரிசைக்கு நகர்த்துவதற்கு, moveToCurrentRow() முறையைப் பயன்படுத்தலாம்.

இந்தப் பயிற்சியில்,அனைத்து நிரல்களும் ஜாவாவில் எழுதப்பட்டுள்ளன. நாங்கள் Java 8 பதிப்பு மற்றும் Oracle DB ஐப் பயன்படுத்தியுள்ளோம்.

>>நீங்கள் இங்கிருந்து Oracle மென்பொருளைப் பதிவிறக்கலாம்

>>நீங்கள் இங்கிருந்து ஜாவா பதிப்பு 8 ஐப் பதிவிறக்கலாம்

இது படிப்படியான ஜாவா நிறுவல் செயல்முறையைக் கொண்டுள்ளது.

JDBC ResultSet எடுத்துக்காட்டு திட்டம்:(வழிசெலுத்தல் முறைகளைப் பயன்படுத்துதல்)

package com.STH.JDBC; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class ResultSet_Example { public static void main(String[] args) throws ClassNotFoundException { // TODO Auto-generated method stub //Select query String select_query = "select * from employee_details"; Class.forName("oracle.jdbc.driver.OracleDriver"); //Connecting to Oracle DB try(Connection conn = DriverManager.getConnection("jdbc:oracle:thin:system/pass123@localhost:1521:X E")) { //Creating DatabaseMetaData object DatabaseMetaData dbmd = conn.getMetaData(); //Checking whether the driver supports scroll sensitive type and concur updatable boolean isSupportResultSetType = dbmd.supportsResultSetConcurrency(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); if(isSupportResultSetType == true) { // Creating prepared Statement PreparedStatement pstatemnt1 = conn.prepareStatement(select_query,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet. CONCUR_UPDATABLE); ResultSet rs = pstatemnt1.executeQuery(); //Moving the cursor to point first row rs.first(); System.out.println("FIRST ROW \n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point last row rs.last(); System.out.println("LAST ROW \n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point before first row rs.beforeFirst(); System.out.println("Cursor is pointing at before the first row. Use next() to move in forward direction"); //Moving the cursor to point first row using next() rs.next(); System.out.println("FIRST ROW \n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point after last row rs.afterLast(); System.out.println("Cursor is pointing at after the last row. Use previous() to move in backward direction"); //Moving the cursor to point last row using previous() rs.previous(); System.out.println("LAST ROW \n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point third row rs.absolute(3); System.out.println("Cursor is pointing at 3rd row"); System.out.println("THIRD ROW \n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point previous row of third row rs.relative(-1); System.out.println("Cursor is pointing to the 1 row previous to the 3rd row"); System.out.println("Second ROW \n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point 4th row after the 2nd row rs.relative(4); System.out.println("Cursor is pointing to the 4th row after the 2nd row"); System.out.println("SIXTH ROW \n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point current row System.out.println(" Current Row = " + rs.getRow()); } } catch (SQLException e) { e.printStackTrace(); } } }

அவுட்புட்:

பணியாளர்_விவரங்கள் அட்டவணையில் உள்ள தரவு

20

விளக்கம்:

மேலே உள்ள திட்டத்தில் முதல்(), கடைசி(), முன் முதல்(), பின் கடைசி(), அடுத்த( ResultSet இல் முந்தைய(), absolute(), உறவினர்() மற்றும் getRow() முறைகள். இந்த முறைகளைப் பயன்படுத்த, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE மதிப்புகளை தயார்நிலை அறிக்கையில் அமைத்துள்ளோம்.

அடுத்து, ResultSet-ல் பெறுபவர் முறைகள் என்ன என்பதை விவாதிப்போம்:

#2) பெறு முறைகள்

ResultSet டேட்டாபேஸில் இருந்து டேபிளின் தரவைச் சேமித்துள்ளது. ResultSet இல் அட்டவணையின் மதிப்புகளைப் பெற பெறர் முறைகள் பயன்படுத்தப்படுகின்றன. அதற்கு, நாம் நெடுவரிசை குறியீட்டு மதிப்பு அல்லது நெடுவரிசைப் பெயரை அனுப்ப வேண்டும்.

ResultSet இல் பின்வருபவை பெறுபவர் முறைகள்:

  • int getInt (int ColumnIndex): குறிப்பிட்ட நெடுவரிசை குறியீட்டின் மதிப்பை int தரவு வகையாகப் பெற இது பயன்படுகிறது.
  • float getFloat(int ColumnIndex): இது பெற பயன்படுகிறது ஒரு மிதவை தரவு வகையாக குறிப்பிடப்பட்ட நெடுவரிசை குறியீட்டின் மதிப்பு.
  • java.sql.dategetDate(int ColumnIndex): குறிப்பிட்ட நெடுவரிசை குறியீட்டின் மதிப்பை தேதி மதிப்பாகப் பெற இது பயன்படுகிறது.
  • int getInt(String ColumnName): இது பெற பயன்படுகிறது குறிப்பிட்ட நெடுவரிசையின் மதிப்பு int தரவு வகை.
  • float getFloat(String ColumnName): குறிப்பிட்ட நெடுவரிசையின் மதிப்பை மிதவை தரவு வகையாகப் பெற இது பயன்படுகிறது.
  • Java.sql.date getDate(String ColumnName): குறிப்பிட்ட நெடுவரிசையின் மதிப்பை தேதி மதிப்பாகப் பெற இது பயன்படுகிறது.

கெட்டர் முறைகள் உள்ளன. அனைத்து பழமையான தரவு வகைகளுக்கும் (பூலியன், நீண்ட, இரட்டை) மற்றும் ResultSet இடைமுகத்தில் உள்ள சரம். தரவுத்தளத்திலிருந்து ஒரு வரிசை மற்றும் பைனரி வகை தரவையும் நாம் பெறலாம். அதற்கான முறைகளும் இதில் உள்ளன.

#3) செட்டர்/அப்டேட்டர் முறைகள்

ResultSet Updater முறைகளைப் பயன்படுத்தி தரவுத்தளத்தில் மதிப்பைப் புதுப்பிக்கலாம். இது கெட்டர் முறைகளைப் போன்றது, ஆனால் தரவுத்தளத்தில் புதுப்பிக்க, குறிப்பிட்ட நெடுவரிசைக்கான மதிப்புகள்/தரவை இங்கு அனுப்ப வேண்டும்.

பின்வருபவை ResultSet இல் உள்ள மேம்படுத்தல் முறைகள்:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> updateFloat(int ColumnIndex, float f): இது குறிப்பிட்ட நெடுவரிசை குறியீட்டின் மதிப்பை மிதவை மதிப்புடன் புதுப்பிக்கப் பயன்படுகிறது.
  • செல்லும் புதுப்பிப்புத் தேதி(int ColumnIndex, Date d): குறிப்பிட்ட நெடுவரிசை குறியீட்டின் மதிப்பைப் புதுப்பிக்க இது பயன்படுகிறதுதேதி மதிப்புடன்.
  • செல்லுபடியாகாத updateInt(String ColumnName, int Value): குறிப்பிட்ட நெடுவரிசையின் மதிப்பை கொடுக்கப்பட்ட முழு எண்ணுடன் புதுப்பிக்க இது பயன்படுகிறது.
  • செல்லுபடியாகாத updateFloat(String ColumnName, float f): இது குறிப்பிட்ட நெடுவரிசையின் மதிப்பை கொடுக்கப்பட்ட மிதவை மதிப்புடன் புதுப்பிக்க பயன்படுகிறது.
  • Java.sql.date getDate(String ColumnName): கொடுக்கப்பட்ட தேதி மதிப்புடன் குறிப்பிட்ட நெடுவரிசையின் மதிப்பைப் புதுப்பிக்க இது பயன்படுகிறது.
  • அனைத்து பழமையான தரவு வகைகளுக்கும் (பூலியன், நீண்ட, இரட்டை) மற்றும் சரம் ஆகியவற்றிற்கு புதுப்பித்தல் முறைகள் உள்ளன. ResultSet இடைமுகத்திலும் உள்ளது.

    புதுப்பிப்பு முறைகள் ResultSet ஆப்ஜெக்டில் உள்ள தரவைப் புதுப்பிக்கும். insertRow அல்லது updateRow முறையை அழைத்த பிறகு மதிப்புகள் DB இல் புதுப்பிக்கப்படும்.

    ஒரு வரிசையைப் புதுப்பித்தல்:

    updateX() முறைகளை அழைப்பதன் மூலம் ஒரு வரிசையில் தரவைப் புதுப்பிக்கலாம் , நெடுவரிசையின் பெயர் அல்லது குறியீட்டைக் கடந்து, புதுப்பிக்க வேண்டிய மதிப்புகள். updateX முறையில் X க்கு பதிலாக எந்த தரவு வகையையும் பயன்படுத்தலாம். இப்போது வரை, ResultSet ஆப்ஜெக்டில் உள்ள தரவைப் புதுப்பித்துள்ளோம். DB இல் தரவைப் புதுப்பிக்க, updateRow() முறையை அழைக்க வேண்டும்.

    வரிசையைச் செருகுதல்:

    கர்சரை நகர்த்துவதற்கு moveToInsertRow()ஐப் பயன்படுத்த வேண்டும். புதிய வரிசையைச் செருக. வழிசெலுத்தல் முறைகள் பிரிவில் இதை ஏற்கனவே நாங்கள் உள்ளடக்கியுள்ளோம். அடுத்து, தரவை வரிசையில் சேர்க்க updateX() முறையை அழைக்க வேண்டும். எல்லா நெடுவரிசைகளுக்கும் நாங்கள் தரவை வழங்க வேண்டும், இல்லையெனில் அது குறிப்பிட்டவற்றின் இயல்புநிலை மதிப்பைப் பயன்படுத்தும்நெடுவரிசை.

    தரவைப் புதுப்பித்த பிறகு, நாம் insertRow() முறையை அழைக்க வேண்டும். பிறகு, moveToCurrentRow() முறையைப் பயன்படுத்தி, புதிய வரிசையைச் செருகத் தொடங்கும் முன், கர்சர் நிலையை மீண்டும் நாம் இருந்த வரிசைக்கு எடுத்துச் செல்லவும்.

    ResultSet Example:

    package com.STH.JDBC; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ResultSet_Example1 { public static void main(String[] args) throws ClassNotFoundException { // TODO Auto-generated method stub String select_query = "select empnum,lastName,firstName from employee_details"; String insert_query = "insert into employee_details values(?,?,?,?,?,?)"; Class.forName("oracle.jdbc.driver.OracleDriver"); //Connecting to Oracle DB try(Connection conn = DriverManager.getConnection("jdbc:oracle:thin:system/pass123@localhost:1521:XE")) { //Creating DatabaseMetaData object DatabaseMetaData dbmd = conn.getMetaData(); //Checking whether the driver supports scroll insensitive type and concur updatable boolean isSupportResultSetType = dbmd.supportsResultSetConcurrency(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); if(isSupportResultSetType == true) { // Creating prepared Statement PreparedStatement pstatemnt1 = conn.prepareStatement(select_query,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs = pstatemnt1.executeQuery(select_query); //Moving the cursor to point last row of the table rs.last(); System.out.println("LAST ROW: Before inserting new Employee"); System.out.println("LAST ROW: EMPNUM = " + rs.getInt(1)); System.out.println("\n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); // Setting the values to insert in the EMPLOYEE_DETAILS Table //Moving the cursor to point insert a row to table rs.moveToInsertRow(); //Update EMPNUM value rs.updateInt(1, 1017); //Update LAST NAME value rs.updateString(2, "Bond"); //Update FIRST NAME value rs.updateString(3, "James"); //Insert a new row rs.insertRow(); //Moving the cursor to point 5th row rs.absolute(5); System.out.println("Befor Updating EMPNUM of the 5th ROW"); System.out.println("\n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); System.out.println(" Updating EMP id of the 5th EMPLOYEE"); //Updating EMPNUM of 5th row rs.updateInt(1,3005); rs.updateRow(); System.out.println("\n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); //Moving the cursor to point last row rs.last(); System.out.println("LAST ROW: EMPNUM = " + rs.getInt(1)); System.out.println("\n EMP NUM = " + rs.getInt("empNum") + "\n LAST NAME = "+ rs.getString(2)+"\n FIRST NAME = " + rs.getString(3)); } } catch (SQLException e) { e.printStackTrace(); } } }

    வெளியீடு:

    விளக்கம்:

    மேலே உள்ள திட்டத்தில் முதலில் என்ன செய்தோம், சேமித்தோம் SELECT வினவலைப் பயன்படுத்தி ResultSet ஆப்ஜெக்டில் உள்ள Employee_details அட்டவணையின் தரவு. பின்னர், ResultSet இன் கடைசி() முறையைப் பயன்படுத்தி, கடைசி வரிசையின் தரவை Employee_details அட்டவணையில் காட்டினோம். moveToInsertRow() முறையானது கர்சரை தற்போதைய வரிசையை சுட்டிக்காட்டுகிறது, இப்போது தற்போதைய வரிசை கடைசி வரிசையாகும்.

    updateXXX()முறைகள் வரிசைக்கு மதிப்புகளைப் புதுப்பிக்கப் பயன்படுகிறது மற்றும் insertRow() முறையானது தரவைச் செருகியுள்ளது. ஒரு புதிய வரிசை. absolute() முறையைப் பயன்படுத்தி, கர்சரை 5 வது வரிசையை சுட்டிக்காட்டும்படி செய்தோம். அட்டவணையில் உள்ள 5வது பணியாளரின் புதிய ஐடியுடன் EMPNUM ஐ புதுப்பிக்க UpdateInt() முறை பயன்படுத்தப்பட்டது. அதன் பிறகு, EMPNUM புதுப்பிக்கப்பட்டதா இல்லையா என்பதைச் சரிபார்க்க தரவைக் காண்பிக்கும்.

    லேஸ்ட்()ஐப் பயன்படுத்தி அட்டவணையின் கடைசி வரிசையை சுட்டிக்காட்டும்படி கர்சரை உருவாக்கி, அதைக் காண்பிக்கும். மேலே உள்ள தர்க்கத்தைச் செயல்படுத்த, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE மதிப்புகளை தயார்நிலை அறிக்கையில் அமைக்க வேண்டும்.

    #4) இதர முறைகள்

    • void close(): இது ResultSet நிகழ்வை மூடவும் மற்றும் விடுவிக்கவும் பயன்படுகிறதுResultSet நிகழ்வுடன் தொடர்புடைய ஆதாரங்கள்.
    • ResultSetMetaData getMetaData(): இது ResultSetMetaData நிகழ்வை வழங்குகிறது. வினவல் வெளியீட்டின் நெடுவரிசைகளின் வகை மற்றும் பண்பு பற்றிய தகவல்களை இது கொண்டுள்ளது. அடுத்த பகுதியில் ResultSetMetaData பற்றி மேலும் அறிந்துகொள்வோம்.

    ResultSetMetaData

    மெட்டாடேட்டா என்றால் என்ன?

    மெட்டாடேட்டா தரவு பற்றிய தரவு என்று பொருள். இந்த இடைமுகத்தைப் பயன்படுத்தி, ResultSet பற்றிய கூடுதல் தகவல்களைப் பெறுவோம். இது java.sql தொகுப்பில் கிடைக்கிறது. ஒவ்வொரு ResultSet பொருளும் ஒரு ResultSetMetaData பொருளுடன் தொடர்புடையது.

    நெடுவரிசையின் தரவு வகை, நெடுவரிசையின் பெயர், நெடுவரிசைகளின் எண்ணிக்கை, அட்டவணையின் பெயர், திட்டப் பெயர் போன்ற நெடுவரிசைகளின் பண்புகளின் விவரங்கள் இந்தப் பொருளில் இருக்கும். ResultSet இன் getMetaData() முறையைப் பயன்படுத்தி ResultSetMetaData பொருளைப் பெறலாம்.

    ResultSetMetaData இன் தொடரியல்:

    PreparedStatement pstatemnt1 = conn.prepareStatement(insert_query); ResultSet rs1 = pstatemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”); ResultSetMetaData rsmd = rs.getMetaData();

    ResultSetMetaData இடைமுகத்தின் முக்கிய முறைகள்:

    முறையின் பெயர் விளக்கம்
    ஸ்ட்ரிங் getColumnName(int column) இது குறிப்பிட்ட நெடுவரிசையின் நெடுவரிசை பெயரை வழங்குகிறது
    ஸ்ட்ரிங் getColumnTypeName(int column) இது தரவு வகையை வழங்குகிறது குறிப்பிட்ட நெடுவரிசையை நாங்கள் அளவுருவாகக் கடந்துவிட்டோம்
    ஸ்ட்ரிங் getTableName(int column) இது நெடுவரிசையின் அட்டவணைப் பெயரை வழங்குகிறது
    ஸ்ட்ரிங் getSchemaName(int column) அது
    மேலே செல்லவும்