JDBC ఫలితాల సెట్: డేటాను తిరిగి పొందడానికి జావా ఫలితాల సెట్‌ను ఎలా ఉపయోగించాలి

డేటాను తిరిగి పొందడానికి JDBC ResultSetని ఎలా ఉపయోగించాలో ఈ ట్యుటోరియల్ వివరిస్తుంది. మేము ఉదాహరణలతో ResultSetMetaData మరియు DatabaseMetaData ఇంటర్‌ఫేస్‌ల గురించి కూడా నేర్చుకుంటాము:

JDBC DriverManager JDBC ట్యుటోరియల్ సిరీస్ ట్యుటోరియల్‌లో, మేము JDBCని ఎలా ఉపయోగించాలో నేర్చుకున్నాము. డ్రైవర్‌మేనేజర్ మరియు దాని పద్ధతులు, జావా అప్లికేషన్‌లలో JDBC ప్రిపేర్డ్ స్టేట్‌మెంట్.

ఈ ట్యుటోరియల్‌లో, మేము JDBCలో మిగిలిన ఇంటర్‌ఫేస్‌లను చర్చిస్తాము. మేము మా మునుపటి ట్యుటోరియల్‌లలో స్టేట్‌మెంట్, ప్రిపేర్డ్‌స్టేట్‌మెంట్ మరియు కాల్ చేయదగిన స్టేట్‌మెంట్ ఇంటర్‌ఫేస్‌లను కవర్ చేసాము.

ఇక్కడ, మేము JDBC ResultSet, ResultSetMetaData మరియు DatabaseMetaData ఇంటర్‌ఫేస్‌లు, వాటి పద్ధతులు మరియు జావా ప్రోగ్రామ్‌లోని పద్ధతులను ఎలా ఉపయోగించాలో గురించి తెలుసుకుందాం.

JDBC ResultSet ఇంటర్‌ఫేస్

ResultSet ఇంటర్‌ఫేస్ java.sql ప్యాకేజీలో ఉంది. జావా ప్రోగ్రామ్‌లోని SQL స్టేట్‌మెంట్‌లను అమలు చేసిన తర్వాత డేటాబేస్ టేబుల్ నుండి తిరిగి వచ్చే డేటాను నిల్వ చేయడానికి ఇది ఉపయోగించబడుతుంది. ResultSet యొక్క ఆబ్జెక్ట్ ఫలిత డేటా వద్ద కర్సర్ పాయింట్‌ను నిర్వహిస్తుంది. డిఫాల్ట్‌గా, కర్సర్ ఫలిత డేటా యొక్క మొదటి అడ్డు వరుస కంటే ముందు ఉంటుంది.

తదుపరి() పద్ధతి కర్సర్‌ను తదుపరి స్థానానికి ముందుకు దిశలో తరలించడానికి ఉపయోగించబడుతుంది. ఇక రికార్డులు లేకుంటే అది FALSEని అందిస్తుంది. ఇది ఏదైనా స్టేట్‌మెంట్ ఆబ్జెక్ట్‌లను ఉపయోగించి executeQuery() పద్ధతిని కాల్ చేయడం ద్వారా డేటాను తిరిగి పొందుతుంది. ఇది స్టేట్‌మెంట్ లేదా ప్రిపేర్డ్ స్టేట్‌మెంట్ లేదా కాల్ చేయదగిన స్టేట్‌మెంట్ ఆబ్జెక్ట్ కావచ్చు. ప్రిపేర్డ్ స్టేట్మెంట్, మరియుకాలమ్ యొక్క పట్టిక యొక్క స్కీమా పేరును అందిస్తుంది int getColumnCount() ఇది ResultSet యొక్క నిలువు వరుసల సంఖ్యను అందిస్తుంది boolean isAutoIncrement(int Column) ఇవ్వబడిన కాలమ్ ఆటో ఇంక్రిమెంట్ అయితే ఇది నిజం అని చూపుతుంది, లేకుంటే తప్పు boolean isCaseSensitive(int కాలమ్) ఇచ్చిన నిలువు వరుస కేస్ సెన్సిటివ్ అయితే ఇది నిజం అని చూపుతుంది, లేకుంటే తప్పు

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)); } } }

OUTPUT:

వివరణ:

పై ప్రోగ్రామ్‌లో, మేము ResultSetMetaData ఇంటర్‌ఫేస్‌లో getColumnCount(),getColumnName(), getColumnTypeName(), getTableName() మరియు getSchemaName() పద్ధతులను అమలు చేసాము.

DatabaseMetaData

DatabaseMetaData వంటి DatatabaseMetaDa గురించి సమాచారాన్ని అందిస్తుంది. డేటాబేస్ పేరు, డేటాబేస్ వెర్షన్ మరియు మొదలైనవి.

DatabaseMetaData ఇంటర్‌ఫేస్ యొక్క ముఖ్యమైన పద్ధతులు:

పద్ధతి పేరు వివరణ
String getDriverName() ఇది మేము మా జావా ప్రోగ్రామ్‌లో ఉపయోగిస్తున్న JDBC డ్రైవర్ పేరుని అందిస్తుంది
String getDriverVersion() ఇది JDBC డ్రైవర్ వెర్షన్ నంబర్
String getUserName() ఇది మేము ఉపయోగిస్తున్న డేటాబేస్ యొక్క వినియోగదారు పేరును అందిస్తుంది
String getDatabaseProductName() ఇది తిరిగి వస్తుంది మేము ఉన్న డేటాబేస్ పేరుఉపయోగించి
String getDatabaseProductVersion() ఇది మనం ఉపయోగిస్తున్న డేటాబేస్ వెర్షన్ నంబర్‌ని అందిస్తుంది
ResultSet getSchemas() ఇది కనెక్ట్ చేయబడిన డేటాబేస్‌లో అందుబాటులో ఉన్న స్కీమాల పేర్లను అందిస్తుంది
String getStringFunctions() ఇది కనెక్ట్ చేయబడిన డేటాబేస్‌లో అందుబాటులో ఉన్న స్ట్రింగ్ ఫంక్షన్‌ల జాబితాను అందిస్తుంది
String getTimeDateFunctions() ఇది కనెక్ట్ చేయబడిన డేటాబేస్‌లో అందుబాటులో ఉన్న సమయం మరియు తేదీ ఫంక్షన్‌ల జాబితాను అందిస్తుంది
String getURL() ఇది డేటాబేస్ కోసం URLని అందిస్తుంది
Boolean isReadOnly() డేటాబేస్ చదవడానికి మాత్రమే మోడ్‌లో ఉందో లేదో అందిస్తుంది
Boolean supportsBatchUpdates() ఇది డేటాబేస్ సపోర్ట్ బ్యాచ్ అప్‌డేట్‌లను అందిస్తుంది
Boolean supportsSavepoints() డేటాబేస్ Savepointsకు మద్దతిస్తుందో లేదో అందిస్తుంది
Boolean supportsStatementPooling() డేటాబేస్ స్టేట్‌మెంట్ పూలింగ్‌కు మద్దతిస్తుందో లేదో అందిస్తుంది
Boolean supportsStoredProcedures() ఇది డేటాబేస్ నిల్వ చేయబడిన విధానాలకు మద్దతిస్తుందో లేదో అందిస్తుంది
Boolean supportsOuterJoins() ఇది డేటాబేస్ ఔటర్ జాయిన్‌కు మద్దతిస్తుందో లేదో చూపుతుంది

ఇక్కడ, మేము డేటాబేస్మెటాడేటా ఇంటర్‌ఫేస్ యొక్క కొన్ని ముఖ్యమైన పద్ధతులను జాబితా చేసాము. మీరు సూచించవచ్చుఅధికారిక సైట్ Oracle ఇక్కడ మీరు DatabaseMetaData ఇంటర్‌ఫేస్‌లో అందుబాటులో ఉన్న అన్ని పద్ధతులను చూడవచ్చు.

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()); } }

OUTPUT:

వివరణ:

పై ప్రోగ్రామ్‌లో, మేము getDriverName(), getDriverVersion()ని ఉపయోగించాము/ అమలు చేసాము , getUserName(), getDatabaseProductName(), getDatabaseProductVersion(), getStringFunctions(), getTimeDateFunctions(), getURL(), isReadOnly(), supportsBatchUpdates(), supportsStatementPooling(), supportsSavepoints(P) పద్ధతులు DatabaseMetaData ఇంటర్‌ఫేస్.

గమనించవలసిన అంశాలు:

  • JDBC ResultSet ఇంటర్‌ఫేస్ డేటాబేస్ నుండి డేటాను నిల్వ చేయడానికి మరియు దానిని మా జావా ప్రోగ్రామ్‌లో ఉపయోగించడానికి ఉపయోగించబడుతుంది.
  • మేము updateXXX() పద్ధతులను ఉపయోగించి డేటాను అప్‌డేట్ చేయడానికి ResultSetని కూడా ఉపయోగించవచ్చు.
  • ResultSet ఆబ్జెక్ట్ ఫలిత డేటా యొక్క మొదటి అడ్డు వరుసకు ముందు కర్సర్‌ను పాయింట్ చేస్తుంది. తదుపరి() పద్ధతిని ఉపయోగించి, మేము ResultSet ద్వారా పునరావృతం చేయవచ్చు.
  • ResultSet ఆబ్జెక్ట్‌లో మరింత ముందుకు వెళ్లడానికి మేము ResultSet యొక్క నావిగేషనల్ పద్ధతులను కలిగి ఉన్నాము
  • ResultMetaData వంటి ఫలితాల సెట్ గురించి మరింత సమాచారం పొందడానికి ఉపయోగించబడుతుంది. నిలువు వరుస పేరు, నిలువు వరుసల సంఖ్య, కాలమ్ యొక్క డేటా రకం మొదలైనవి.
  • మేము కనెక్ట్ చేసిన డేటాబేస్ గురించి సమాచారాన్ని పొందడానికి DatabaseMetData ఉపయోగించబడుతుంది

తరచుగా అడిగే ప్రశ్నలు

Q #1) దేని వల్ల ఉపయోగంResultSet?

సమాధానం: DB నుండి డేటాను నిల్వ చేయడానికి మరియు తిరిగి పొందడానికి ResultSet ఉపయోగించబడుతుంది. executeQuery() పద్ధతిని అమలు చేసినప్పుడు, అది ResultSet ఆబ్జెక్ట్‌ని అందిస్తుంది. మేము లాజిక్‌ను అమలు చేయడానికి మా ప్రోగ్రామ్‌లో ఆ ResultSet ఆబ్జెక్ట్‌ని ఉపయోగించవచ్చు.

Q #2) ResultSet ఖాళీగా ఉందో లేదో తనిఖీ చేయడం ఎలా?

సమాధానం: IsResultSet ఖాళీని తనిఖీ చేయడానికి పొడవు(), పరిమాణం() వంటి ముందే నిర్వచించబడిన పద్ధతులు ఏవీ అందుబాటులో లేవు. మేము పునరావృతం చేయడానికి తదుపరి() పద్ధతిని ఉపయోగించవచ్చు మరియు అది ఒప్పు అని తిరిగి ఇచ్చినట్లయితే, అది ఖాళీగా ఉండదు, ఒకవేళ తప్పుని అందిస్తే, ResultSet ఖాళీగా ఉంటుంది.

Q #3) ResultSet సాధ్యమేనా శూన్యంగా ఉండవచ్చా?

సమాధానం: కాదు, ఎగ్జిక్యూట్ క్వెరీ() పద్ధతి రిజల్ట్‌సెట్ ఆబ్జెక్ట్‌ను అందిస్తుంది, అది ఎప్పటికీ శూన్యం కాదు.

Q #4) అప్‌డేట్ చేయగల రిజల్ట్‌సెట్ అంటే ఏమిటి?

సమాధానం: నిలువు వరుసలోని డేటాను అప్‌డేట్ చేయడానికి, నిలువు వరుసలలో డేటాను ఇన్సర్ట్ చేయడానికి మరియు అడ్డు వరుసలను తొలగించడానికి అప్‌డేట్ చేయగల రిజల్ట్‌సెట్ ఆబ్జెక్ట్ ఉపయోగించబడుతుంది. రిజల్ట్‌సెట్‌ను అప్‌డేట్ చేయదగినదిగా చేయడానికి, మేము స్క్రోల్ టైప్‌ను సెన్సిటివ్ లేదా సెన్సిటివ్‌గా మరియు CONCUR రకాన్ని అప్‌డేట్ చేయదగినదిగా చేయాలి.

ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE.

Q #5) కనెక్ట్ చేయబడిన డేటాబేస్ పేరును ఎలా పొందాలి?

సమాధానం: మేము డేటాబేస్మెటాడేటా ఆబ్జెక్ట్ యొక్క getDatabaseProductName() పద్ధతిని ఉపయోగించవచ్చు.

ముగింపు

ఈ ట్యుటోరియల్‌లో, మేము ఏమి చర్చించాము ResultSet, ResultSetMetaData మరియు DatabaseMetaData ఇంటర్‌ఫేస్‌లు మరియు JDBC ప్రోగ్రామ్‌లలో సాధారణంగా ఉపయోగించే వాటి ముఖ్యమైన పద్ధతులు. మనం కూడా చూశాంResultSetని ఉపయోగించి DBలో డేటాను ఎలా అప్‌డేట్ చేయాలి. ResultSetMetadata కాలమ్ పేరు, కాలమ్ కౌంట్ మరియు మొదలైన వాటి వంటి ResultSet గురించి సమాచారాన్ని కలిగి ఉంది.

DatabaseMetaData డేటాబేస్ సమాచారాన్ని కలిగి ఉంది.

>

CallableStatement ఇంటర్‌ఫేస్‌లు స్టేట్‌మెంట్ ఇంటర్‌ఫేస్ యొక్క ఉప-ఇంటర్‌ఫేస్‌లు.

స్టేట్‌మెంట్ ఇంటర్‌ఫేస్

Statement statemnt1 = conn.createStatement(); ResultSet rs1 = statemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”);

PreparedStatement Interface

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

మేము చేయగలము X – కాలమ్ యొక్క డేటాటైప్ అయిన ఫలితాల ద్వారా మళ్ళించేటప్పుడు నిలువు వరుసల డేటాను పొందడానికి getX() పద్ధతిని ఉపయోగించండి. మేము 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); } 

రిజల్ట్‌సెట్ రకాలు

డిఫాల్ట్‌గా, ఫార్వర్డ్ దిశలో అమలు చేయబడిన SQL స్టేట్‌మెంట్ యొక్క అవుట్‌పుట్‌గా తిరిగి వచ్చిన రిజల్ట్‌సెట్‌లోని డేటా/విలువలను మేము పునరావృతం చేయవచ్చు. మేము స్క్రోల్ చేయదగిన రిజల్ట్‌సెట్‌ని ఉపయోగించి ఇతర దిశలలో విలువలను పునరావృతం చేయవచ్చు. మేము స్టేట్‌మెంట్, ప్రిపేర్డ్‌స్టేట్‌మెంట్ మరియు కాల్ చేయదగిన స్టేట్‌మెంట్ ఆబ్జెక్ట్‌లను సృష్టించేటప్పుడు రిజల్ట్‌సెట్ యొక్క రకాన్ని మరియు సమ్మతిని పేర్కొనవచ్చు.

ResultSetలో 3 రకాలు ఉన్నాయి. అవి:

  1. TYPE_FORWARD_ONLY: ఇది డిఫాల్ట్ ఎంపిక, ఇక్కడ కర్సర్ ప్రారంభం నుండి చివరి వరకు అంటే ముందుకు దిశలో కదులుతుంది.
  2. TYPE_SCROLL_INSENSITIVE: ఈ రకంలో, ఇది కర్సర్‌ను ముందుకు మరియు వెనుకకు రెండు దిశలలో కదిలేలా చేస్తుంది. నిల్వ చేసిన డేటాను పునరావృతం చేస్తున్నప్పుడు మనం డేటాలో ఏవైనా మార్పులు చేస్తే, ఎవరైనా DBలోని డేటాను మార్చినట్లయితే అది డేటాసెట్‌లో నవీకరించబడదు. ఎందుకంటే SQL ప్రశ్న తిరిగి వచ్చిన సమయం నుండి డేటాసెట్ డేటాను కలిగి ఉంటుందిడేటా.
  3. TYPE_SCROLL_SENSITIVE: ఇది TYPE_SCROLL_INSENSITIVEని పోలి ఉంటుంది, SQL క్వెరీ డేటాను తిరిగి అందించిన తర్వాత ఎవరైనా డేటాను అప్‌డేట్ చేస్తే తేడా ఉంటుంది, అయితే అది డేటాసెట్‌లో మార్పులను ప్రతిబింబిస్తుంది.

ResultSet కాన్‌కరెన్సీ

ResultSetలో 2 రీతులలో కాన్‌కరెన్సీ ఉన్నాయి. అవి:

  1. ResultSet.CONCUR_READ_ONLY: ఇది డిఫాల్ట్ కాన్కరెన్సీ మోడ్. మేము రిజల్ట్‌సెట్‌లోని డేటాను మాత్రమే చదవగలము. నవీకరణ వర్తించదు.
  2. ResultSet.CONCUR_UPDATABLE: మేము ResultSet ఆబ్జెక్ట్‌లో డేటాను అప్‌డేట్ చేయవచ్చు.

కొన్ని డేటాబేస్‌లు అన్నింటికీ కాన్కరెన్సీ మోడ్‌కు మద్దతు ఇవ్వవు ఫలితాల సెట్ రకాలు. అలాంటప్పుడు, supportsResultSetConcurrency() పద్ధతిని ఉపయోగించి వారు మనకు కావలసిన రకం మరియు కాన్కరెన్సీ మోడ్‌కు మద్దతు ఇస్తారో లేదో తనిఖీ చేయాలి.

ResultSet ఇంటర్‌ఫేస్‌లోని పద్ధతులు

ResultSet పద్ధతులు 4 వర్గాలు ఉన్నాయి. అవి:

  1. నావిగేషనల్ మెథడ్స్
  2. గెట్టర్ మెథడ్స్
  3. సెట్టర్ మెథడ్స్
  4. ఇతర పద్ధతులు

ముందుగా, మేము నావిగేషనల్ మెథడ్స్ గురించి చర్చించి, ఆపై మరింత ముందుకు వెళ్తాము.

#1) నావిగేషనల్ మెథడ్స్

డేటాసెట్ చుట్టూ కర్సర్‌ను తరలించడానికి ఈ పద్ధతి ఉపయోగించబడుతుంది.

  • బూలియన్ సంపూర్ణ(పూర్ణాంక వరుస): ఇది పారామీటర్‌లో పేర్కొన్న నిర్దిష్ట అడ్డు వరుసకు కర్సర్‌ను తరలించడానికి మరియు ఆపరేషన్ విజయవంతమైతే ఒప్పు అని తిరిగి ఇవ్వడానికి ఉపయోగించబడుతుంది.
  • శూన్యంafterLast(): ఇది ResultSet కర్సర్‌ని చివరి అడ్డు వరుస తర్వాత తరలించేలా చేస్తుంది.
  • Void beforeFirst(): ఇది ResultSet కర్సర్‌ని మొదటి అడ్డు వరుస కంటే ముందు కదిలేలా చేస్తుంది.
  • Boolean first(): ఇది ResultSet కర్సర్‌ను మొదటి అడ్డు వరుసకు తరలించేలా చేస్తుంది. ఆపరేషన్ విజయవంతమైతే అది ఒప్పు అని తిరిగి వస్తుంది లేకపోతే తప్పు.
  • బూలియన్ చివరి(): ఇది ResultSet కర్సర్‌ను చివరి వరుసకు తరలించేలా చేస్తుంది. ఆపరేషన్ విజయవంతమైతే అది ఒప్పు అని తిరిగి వస్తుంది లేకుంటే తప్పు.
  • Boolean next(): ఇది ResultSet కర్సర్‌ను తదుపరి వరుసకు తరలించేలా చేస్తుంది. ఇది మరిన్ని రికార్డ్‌లు ఉంటే ఒప్పు మరియు మరిన్ని రికార్డ్‌లు లేకుంటే తప్పు అని చూపుతుంది.
  • బూలియన్ మునుపటి(): ఇది 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(); } } }

ఔట్‌పుట్:

ఉద్యోగి_వివరాల పట్టికలోని డేటా

వివరణ:

పై ప్రోగ్రామ్‌లో మేము మొదటి(), చివరి(), ముందు మొదటి(), తర్వాత చివరి(), తదుపరి( ResultSetలో మునుపటి(), సంపూర్ణ(), సంబంధిత() మరియు getRow() పద్ధతులు. ఈ పద్ధతులను ఉపయోగించడానికి మేము ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE విలువలను ప్రిపేర్‌స్టేట్‌మెంట్ పద్ధతిలో సెట్ చేస్తాము.

తర్వాత, రిజల్ట్‌సెట్‌లో గెట్టర్ మెథడ్స్ ఏమిటో చర్చిస్తాము:

#2) పొందే పద్ధతులు

ResultSet డేటాబేస్ నుండి టేబుల్ యొక్క డేటాను నిల్వ చేసింది. ResultSetలో పట్టిక విలువలను పొందడానికి గెట్టర్ పద్ధతులు ఉపయోగించబడతాయి. దాని కోసం, మేము నిలువు వరుస సూచిక విలువ లేదా నిలువు వరుస పేరును పాస్ చేయాలి.

ResultSetలో కిందివి పొందే పద్ధతులు:

  • int getInt (int ColumnIndex): ఇది పూర్ణాంక డేటా రకంగా పేర్కొన్న కాలమ్ సూచిక విలువను పొందడానికి ఉపయోగించబడుతుంది.
  • float getFloat(int ColumnIndex): ఇది పొందడానికి ఉపయోగించబడుతుంది ఫ్లోట్ డేటా రకంగా పేర్కొన్న నిలువు వరుస సూచిక విలువ.
  • java.sql.dategetDate(int ColumnIndex): ఇది పేర్కొన్న నిలువు వరుస సూచిక యొక్క విలువను తేదీ విలువగా పొందడానికి ఉపయోగించబడుతుంది.
  • int getInt(String ColumnName): ఇది పొందడానికి ఉపయోగించబడుతుంది పూర్ణాంక డేటా రకంగా పేర్కొన్న నిలువు వరుస విలువ.
  • float getFloat(String ColumnName): ఇది పేర్కొన్న నిలువు వరుస విలువను ఫ్లోట్ డేటా రకంగా పొందడానికి ఉపయోగించబడుతుంది.
  • Java.sql.date getDate(String ColumnName): ఇది పేర్కొన్న నిలువు వరుస విలువను తేదీ విలువగా పొందడానికి ఉపయోగించబడుతుంది.

గెటర్ పద్ధతులు ఉన్నాయి ResultSet ఇంటర్‌ఫేస్‌లో అన్ని ఆదిమ డేటా రకాలు (బూలియన్, లాంగ్, డబుల్) మరియు స్ట్రింగ్ కోసం. మేము డేటాబేస్ నుండి శ్రేణి మరియు బైనరీ రకం డేటాను కూడా పొందవచ్చు. ఇది దాని కోసం పద్ధతులను కూడా కలిగి ఉంది.

#3) సెట్టర్/అప్‌డేటర్ పద్ధతులు

మేము ResultSet అప్‌డేటర్ పద్ధతులను ఉపయోగించి డేటాబేస్‌లో విలువను నవీకరించవచ్చు. ఇది గెట్టర్ పద్ధతులను పోలి ఉంటుంది, కానీ ఇక్కడ మేము డేటాబేస్‌లో అప్‌డేట్ చేయడానికి నిర్దిష్ట కాలమ్ కోసం విలువలు/డేటాను పాస్ చేయాలి.

క్రిందివి ResultSetలో అప్‌డేటర్ పద్ధతులు:

  • void updateInt(int ColumnIndex, int Value): ఇది పూర్ణాంక విలువతో పేర్కొన్న నిలువు వరుస సూచిక విలువను నవీకరించడానికి ఉపయోగించబడుతుంది.
  • శూన్యం updateFloat(int ColumnIndex, float f): ఇది పేర్కొన్న నిలువు వరుస సూచిక యొక్క విలువను ఫ్లోట్ విలువతో అప్‌డేట్ చేయడానికి ఉపయోగించబడుతుంది.
  • update డేట్ చెల్లదు(int ColumnIndex, Date d): ఇది పేర్కొన్న నిలువు వరుస సూచిక విలువను నవీకరించడానికి ఉపయోగించబడుతుందితేదీ విలువతో.
  • శూన్యం updateInt(String ColumnName, int Value): ఇది ఇచ్చిన పూర్ణాంక విలువతో పేర్కొన్న నిలువు వరుస విలువను నవీకరించడానికి ఉపయోగించబడుతుంది.
  • శూన్యం అప్‌డేట్‌ఫ్లోట్(స్ట్రింగ్ కాలమ్‌నేమ్, ఫ్లోట్ ఎఫ్): ఇది పేర్కొన్న ఫ్లోట్ విలువతో పేర్కొన్న నిలువు వరుస విలువను నవీకరించడానికి ఉపయోగించబడుతుంది.
  • Java.sql.date getDate(String ColumnName): ఇది ఇచ్చిన తేదీ విలువతో పేర్కొన్న నిలువు వరుస విలువను నవీకరించడానికి ఉపయోగించబడుతుంది.

అన్ని ఆదిమ డేటా రకాలు (బూలియన్, లాంగ్, డబుల్) మరియు స్ట్రింగ్ కోసం అప్‌డేటర్ పద్ధతులు ఉన్నాయి. ResultSet ఇంటర్‌ఫేస్‌లో కూడా.

అప్‌డేటర్ పద్ధతులు ResultSet ఆబ్జెక్ట్‌లోని డేటాను అప్‌డేట్ చేయండి. ఇన్‌సర్ట్‌రో లేదా అప్‌డేట్‌రో పద్ధతికి కాల్ చేసిన తర్వాత విలువలు డిబిలో అప్‌డేట్ చేయబడతాయి.

వరుసను నవీకరిస్తోంది:

మేము అప్‌డేట్‌ఎక్స్() పద్ధతులకు కాల్ చేయడం ద్వారా డేటాను వరుసగా అప్‌డేట్ చేయవచ్చు , కాలమ్ పేరు లేదా సూచిక మరియు అప్‌డేట్ చేయడానికి విలువలను పాస్ చేయడం. మనం updateX పద్ధతిలో X స్థానంలో ఏదైనా డేటా రకాన్ని ఉపయోగించవచ్చు. ఇప్పటి వరకు, మేము ResultSet ఆబ్జెక్ట్‌లోని డేటాను అప్‌డేట్ చేసాము. DBలో డేటాను అప్‌డేట్ చేయడానికి, మేము updateRow() పద్ధతికి కాల్ చేయాలి.

ఒక అడ్డు వరుసను చొప్పించడం:

కర్సర్‌ని తరలించడానికి మేము moveToInsertRow()ని ఉపయోగించాలి కొత్త అడ్డు వరుసను చొప్పించడానికి. మేము దీనిని నావిగేషన్ పద్ధతుల విభాగంలో ఇప్పటికే కవర్ చేసాము. తర్వాత, వరుసకు డేటాను జోడించడానికి మనం updateX() పద్ధతికి కాల్ చేయాలి. మేము అన్ని నిలువు వరుసల కోసం డేటాను అందించాలి, లేకపోతే అది నిర్దిష్ట డిఫాల్ట్ విలువను ఉపయోగిస్తుందికాలమ్.

డేటాను అప్‌డేట్ చేసిన తర్వాత, మేము ఇన్‌సర్ట్‌రో() పద్ధతికి కాల్ చేయాలి. మేము కొత్త అడ్డు వరుసను చొప్పించడం ప్రారంభించే ముందు ఉన్న అడ్డు వరుసకు కర్సర్ స్థానాన్ని తిరిగి తీసుకెళ్లడానికి, moveToCurrentRow() పద్ధతిని ఉపయోగించండి.

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; 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 యొక్క చివరి() పద్ధతిని ఉపయోగించి ఉద్యోగి_వివరాల పట్టికలో చివరి వరుస యొక్క డేటాను ప్రదర్శించాము. moveToInsertRow() పద్ధతి కర్సర్‌ను ప్రస్తుత అడ్డు వరుసను సూచించేలా చేస్తుంది, ఇప్పుడు ప్రస్తుత అడ్డు వరుస చివరి వరుస.

updateXXX()పద్ధతులు అడ్డు వరుసకు విలువలను నవీకరించడానికి ఉపయోగించబడతాయి మరియు insertRow() పద్ధతిలో డేటాను చొప్పించారు ఒక కొత్త వరుస. సంపూర్ణ() పద్ధతిని ఉపయోగించి, మేము కర్సర్‌ను 5వ వరుసకు సూచించేలా చేసాము. పట్టికలోని 5వ ఉద్యోగి యొక్క కొత్త ఐడితో EMPNUMని నవీకరించడానికి UpdateInt() పద్ధతి ఉపయోగించబడింది. ఆ తర్వాత, EMPNUM అప్‌డేట్ చేయబడిందో లేదో తనిఖీ చేయడానికి డేటాను ప్రదర్శించబడుతుంది.

లాస్ట్()ని ఉపయోగించి పట్టికలోని చివరి అడ్డు వరుసను సూచించేలా కర్సర్‌ను తయారు చేసి, దానిని ప్రదర్శించింది. పై లాజిక్‌ను అమలు చేయడానికి, మేము ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE విలువలను ప్రిపేర్‌స్టేట్‌మెంట్ పద్ధతిలో సెట్ చేయాలి.

#4) ఇతర పద్ధతులు

  • శూన్యం క్లోజ్(): ఇది రిజల్ట్‌సెట్ ఉదాహరణను మూసివేయడానికి మరియు ఖాళీ చేయడానికి ఉపయోగించబడుతుంది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) ఇది నిర్దిష్ట కాలమ్ యొక్క నిలువు వరుస పేరును అందిస్తుంది
String getColumnTypeName(int column) ఇది డేటాటైప్‌ను అందిస్తుంది మేము పారామీటర్‌గా పాస్ చేసిన నిర్దిష్ట నిలువు వరుస
String getTableName(int column) ఇది నిలువు వరుస యొక్క పట్టిక పేరుని అందిస్తుంది
String getSchemaName(int column) ఇది
ముందుకు స్క్రోల్ చేయండి