ਇਹ ਟਿਊਟੋਰਿਅਲ ਦੱਸਦਾ ਹੈ ਕਿ ਡੇਟਾ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ JDBC ResultSet ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ। ਅਸੀਂ ਉਦਾਹਰਨਾਂ ਦੇ ਨਾਲ ResultSetMetaData ਅਤੇ DatabaseMetaData ਇੰਟਰਫੇਸ ਬਾਰੇ ਵੀ ਸਿੱਖਾਂਗੇ:
JDBC ਡ੍ਰਾਈਵਰਮੈਨੇਜਰ ਟਿਊਟੋਰਿਅਲ JDBC ਟਿਊਟੋਰਿਅਲ ਸੀਰੀਜ਼ ਵਿੱਚ, ਅਸੀਂ JDBC ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ। ਡਰਾਈਵਰ ਮੈਨੇਜਰ ਅਤੇ ਇਸਦੇ ਢੰਗ, ਜਾਵਾ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ JDBC PreparedStatement।
ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ, ਅਸੀਂ JDBC ਵਿੱਚ ਬਾਕੀ ਬਚੇ ਇੰਟਰਫੇਸਾਂ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ। ਅਸੀਂ ਆਪਣੇ ਪਿਛਲੇ ਟਿਊਟੋਰਿਅਲਸ ਵਿੱਚ ਸਟੇਟਮੈਂਟ, PreparedStatement, ਅਤੇ CallableStatement ਇੰਟਰਫੇਸਾਂ ਨੂੰ ਕਵਰ ਕੀਤਾ ਹੈ।
ਇੱਥੇ, ਅਸੀਂ JDBC ResultSet, ResultSetMetaData, ਅਤੇ DatabaseMetaData ਇੰਟਰਫੇਸ, ਉਹਨਾਂ ਦੇ ਤਰੀਕਿਆਂ ਅਤੇ Java ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਤਰੀਕਿਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਸਿੱਖਾਂਗੇ।
JDBC ResultSet Interface
ResultSet ਇੰਟਰਫੇਸ java.sql ਪੈਕੇਜ ਵਿੱਚ ਮੌਜੂਦ ਹੈ। ਇਹ ਜਾਵਾ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ SQL ਸਟੇਟਮੈਂਟਾਂ ਦੇ ਲਾਗੂ ਹੋਣ ਤੋਂ ਬਾਅਦ ਡੇਟਾਬੇਸ ਟੇਬਲ ਤੋਂ ਵਾਪਸ ਕੀਤੇ ਗਏ ਡੇਟਾ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ResultSet ਦਾ ਆਬਜੈਕਟ ਨਤੀਜਾ ਡੇਟਾ 'ਤੇ ਕਰਸਰ ਪੁਆਇੰਟ ਨੂੰ ਕਾਇਮ ਰੱਖਦਾ ਹੈ। ਮੂਲ ਰੂਪ ਵਿੱਚ, ਨਤੀਜਾ ਡੇਟਾ ਦੀ ਪਹਿਲੀ ਕਤਾਰ ਤੋਂ ਪਹਿਲਾਂ ਕਰਸਰ ਦੀ ਸਥਿਤੀ ਹੁੰਦੀ ਹੈ।
ਅਗਲੀ() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਸਰ ਨੂੰ ਅੱਗੇ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ ਅਗਲੀ ਸਥਿਤੀ ਵਿੱਚ ਲਿਜਾਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇਕਰ ਕੋਈ ਹੋਰ ਰਿਕਾਰਡ ਨਹੀਂ ਹਨ ਤਾਂ ਇਹ FALSE ਵਾਪਸ ਕਰੇਗਾ। ਇਹ ਕਿਸੇ ਵੀ ਸਟੇਟਮੈਂਟ ਆਬਜੈਕਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ executeQuery() ਵਿਧੀ ਨੂੰ ਕਾਲ ਕਰਕੇ ਡਾਟਾ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਇਹ ਸਟੇਟਮੈਂਟ ਜਾਂ PreparedStatement ਜਾਂ CallableStatement ਆਬਜੈਕਟ ਹੋ ਸਕਦਾ ਹੈ। PreparedStatement, ਅਤੇਕਾਲਮ ਦੀ ਸਾਰਣੀ ਦਾ ਸਕੀਮਾ ਨਾਮ ਵਾਪਸ ਕਰਦਾ ਹੈ
ਰਿਜ਼ਲਟਸੈੱਟਮੇਟਾਡਾਟਾ ਉਦਾਹਰਨ
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
DatabaseMetaData Database ਵਾਂਗ ਜਾਣਕਾਰੀ ਦਿੰਦਾ ਹੈ। DatabaseName, Database version, and so on.
DatabaseMetaData ਇੰਟਰਫੇਸ ਦੇ ਮਹੱਤਵਪੂਰਨ ਢੰਗ:
ਵਿਧੀ ਦਾ ਨਾਮ | ਵਿਵਰਣ |
---|---|
ਸਟ੍ਰਿੰਗ getDriverName() | ਇਹ JDBC ਡਰਾਈਵਰ ਦਾ ਨਾਮ ਵਾਪਸ ਕਰੇਗਾ ਜੋ ਅਸੀਂ ਆਪਣੇ ਜਾਵਾ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਵਰਤ ਰਹੇ ਹਾਂ |
ਸਟ੍ਰਿੰਗ getDriverVersion() | ਇਹ JDBC ਡਰਾਈਵਰ ਸੰਸਕਰਣ ਨੰਬਰ ਵਾਪਸ ਕਰਦਾ ਹੈ |
ਸਟ੍ਰਿੰਗ getUserName() | ਇਹ ਉਸ ਡੇਟਾਬੇਸ ਦਾ ਉਪਭੋਗਤਾ ਨਾਮ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਅਸੀਂ ਵਰਤ ਰਹੇ ਹਾਂ |
ਸਟ੍ਰਿੰਗ getDatabaseProductName() | ਇਹ ਵਾਪਸ ਕਰਦਾ ਹੈ ਡੇਟਾਬੇਸ ਦਾ ਨਾਮ ਜੋ ਅਸੀਂ ਹਾਂਵਰਤਦੇ ਹੋਏ |
ਸਟ੍ਰਿੰਗ getDatabaseProductVersion() | ਇਹ ਡੇਟਾਬੇਸ ਦਾ ਸੰਸਕਰਣ ਨੰਬਰ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਅਸੀਂ ਵਰਤ ਰਹੇ ਹਾਂ |
ResultSet getSchemas() | ਇਹ ਕਨੈਕਟ ਕੀਤੇ ਡੇਟਾਬੇਸ ਵਿੱਚ ਉਪਲਬਧ ਸਕੀਮਾਂ ਦੇ ਨਾਮ ਵਾਪਸ ਕਰਦਾ ਹੈ |
ਸਟ੍ਰਿੰਗ getStringFunctions() | ਇਹ ਕਨੈਕਟ ਕੀਤੇ ਡੇਟਾਬੇਸ ਵਿੱਚ ਉਪਲਬਧ ਸਟ੍ਰਿੰਗ ਫੰਕਸ਼ਨਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰਦਾ ਹੈ |
ਸਟਰਿੰਗ getTimeDateFunctions() | ਇਹ ਕਨੈਕਟ ਕੀਤੇ ਡੇਟਾਬੇਸ ਵਿੱਚ ਉਪਲਬਧ ਸਮਾਂ ਅਤੇ ਮਿਤੀ ਫੰਕਸ਼ਨਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰਦਾ ਹੈ |
ਸਟ੍ਰਿੰਗ getURL() | ਇਹ ਡੇਟਾਬੇਸ ਲਈ URL ਵਾਪਸ ਕਰਦਾ ਹੈ |
ਬੂਲੀਨ isReadOnly() | ਇਹ ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੇਟਾਬੇਸ ਰੀਡ-ਓਨਲੀ ਮੋਡ ਵਿੱਚ ਹੈ |
ਬੂਲੀਅਨ ਸਪੋਰਟਸਬੈਚਅੱਪਡੇਟਸ() | ਇਹ ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੇਟਾਬੇਸ ਬੈਚ ਅਪਡੇਟਸ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ |
ਬੂਲੀਅਨ ਸਪੋਰਟਸਸੇਵਪੁਆਇੰਟਸ() | ਇਹ ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੇਟਾਬੇਸ ਸੇਵਪੁਆਇੰਟਸ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ |
ਬੁਲੀਅਨ ਸਪੋਰਟਸਸਟੇਟਮੈਂਟਪੂਲਿੰਗ() | ਇਹ ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੇਟਾਬੇਸ ਸਟੇਟਮੈਂਟ ਪੂਲਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ |
ਬੂਲੀਅਨ ਸਪੋਰਟਸਸਟੋਰਡ ਪ੍ਰਕਿਰਿਆਵਾਂ() | ਇਹ ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੇਟਾਬੇਸ ਸਟੋਰ ਕੀਤੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ |
5> | ਇਹ ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੇਟਾਬੇਸ ਬਾਹਰੀ ਸ਼ਾਮਲ ਹੋਣ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ |
ਇੱਥੇ, ਅਸੀਂ ਡੇਟਾਬੇਸ ਮੇਟਾਡਾਟਾ ਇੰਟਰਫੇਸ ਦੀਆਂ ਕੁਝ ਮਹੱਤਵਪੂਰਨ ਵਿਧੀਆਂ ਨੂੰ ਸੂਚੀਬੱਧ ਕੀਤਾ ਹੈ। ਦਾ ਹਵਾਲਾ ਦੇ ਸਕਦੇ ਹੋ 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()); } }
ਆਊਟਪੁਟ:
ਸਪਸ਼ਟੀਕਰਨ:
ਉਪਰੋਕਤ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ, ਅਸੀਂ getDriverName(), getDriverVersion() ਦੀ ਵਰਤੋਂ/ਲਾਗੂ ਕੀਤੀ ਹੈ। , getUserName(), getDatabaseProductName(), getDatabaseProductVersion(), getStringFunctions(), getTimeDateFunctions(), getURL(), isReadOnly(), supportsBatchUpdates(), supportsStatementPooling(), supportsSavepoints(), supports(dusResuter) ਅਤੇ ਸਟੋਰੇਜ (ਪ੍ਰੋਡੈਕਟ) ਵਿਧੀਆਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। DatabaseMetaData ਇੰਟਰਫੇਸ।
ਨੋਟ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਨੁਕਤੇ:
- JDBC ResultSet ਇੰਟਰਫੇਸ ਨੂੰ ਡੇਟਾਬੇਸ ਤੋਂ ਡੇਟਾ ਸਟੋਰ ਕਰਨ ਅਤੇ ਸਾਡੇ ਜਾਵਾ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਵਰਤਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- ਅਸੀਂ updateXXX() ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ResultSet ਦੀ ਵਰਤੋਂ ਵੀ ਕਰ ਸਕਦੇ ਹਾਂ।
- ਰਿਜ਼ਲਟਸੈੱਟ ਆਬਜੈਕਟ ਨਤੀਜਾ ਡੇਟਾ ਦੀ ਪਹਿਲੀ ਕਤਾਰ ਤੋਂ ਪਹਿਲਾਂ ਕਰਸਰ ਨੂੰ ਪੁਆਇੰਟ ਕਰਦਾ ਹੈ। ਅਗਲੀ() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਅਸੀਂ ResultSet ਰਾਹੀਂ ਦੁਹਰਾ ਸਕਦੇ ਹਾਂ।
- ਸਾਡੇ ਕੋਲ ResultSet ਆਬਜੈਕਟ ਵਿੱਚ ਅੱਗੇ ਜਾਣ ਲਈ ResultSet ਦੇ ਨੈਵੀਗੇਸ਼ਨਲ ਤਰੀਕੇ ਹਨ
- ResultMetaData ਦੀ ਵਰਤੋਂ ResultSet ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਕਾਲਮ ਦਾ ਨਾਮ, ਕਾਲਮਾਂ ਦੀ ਸੰਖਿਆ, ਕਾਲਮ ਦਾ ਡੇਟਾ ਟਾਈਪ, ਆਦਿ।
- ਡਾਟਾਬੇਸਮੇਟਡਾਟਾ ਦੀ ਵਰਤੋਂ ਉਸ ਡੇਟਾਬੇਸ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿਸਨੂੰ ਅਸੀਂ ਕਨੈਕਟ ਕੀਤਾ ਹੈ
ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ
Q #1) ਦੀ ਵਰਤੋਂ ਕੀ ਹੈResultSet?
ਜਵਾਬ: ResultSet ਦੀ ਵਰਤੋਂ DB ਤੋਂ ਡਾਟਾ ਸਟੋਰ ਕਰਨ ਅਤੇ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜਦੋਂ executeQuery() ਵਿਧੀ ਨੂੰ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ ResultSet ਆਬਜੈਕਟ ਵਾਪਸ ਕਰੇਗਾ। ਅਸੀਂ ਆਪਣੇ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਉਸ ResultSet ਆਬਜੈਕਟ ਦੀ ਵਰਤੋਂ ਤਰਕ ਨੂੰ ਕਰਨ ਲਈ ਕਰ ਸਕਦੇ ਹਾਂ।
Q #2) ਇਹ ਕਿਵੇਂ ਪਤਾ ਲਗਾਇਆ ਜਾਵੇ ਕਿ ਨਤੀਜਾ ਸੈੱਟ ਖਾਲੀ ਹੈ ਜਾਂ ਨਹੀਂ?
ਜਵਾਬ: ਇੱਥੇ IsResultSet Empty ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ length(), size() ਵਰਗੀਆਂ ਕੋਈ ਪਹਿਲਾਂ ਤੋਂ ਪਰਿਭਾਸ਼ਿਤ ਵਿਧੀਆਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ। ਅਸੀਂ ਦੁਹਰਾਉਣ ਲਈ ਅਗਲੀ() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਜੇਕਰ ਇਹ True ਵਾਪਸ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਖਾਲੀ ਨਹੀਂ ਹੈ, ਜੇਕਰ ਇਹ False ਦਿੰਦਾ ਹੈ ਤਾਂ ਨਤੀਜਾਸੈੱਟ ਖਾਲੀ ਹੈ।
Q #3) ਕੀ ਇਹ ਸੰਭਵ ਹੈ ਕਿ ਨਤੀਜਾ ਸੈੱਟ null ਹੋ ਸਕਦਾ ਹੈ?
ਜਵਾਬ: ਨਹੀਂ, executeQuery() ਵਿਧੀ ResultSet ਆਬਜੈਕਟ ਵਾਪਸ ਕਰਦੀ ਹੈ ਜੋ ਕਦੇ ਵੀ null ਨਹੀਂ ਹੋ ਸਕਦੀ।
Q #4) ਅੱਪਡੇਟੇਬਲ ਰਿਜ਼ਲਟਸੈਟ ਕੀ ਹੈ?
ਜਵਾਬ: ਇੱਕ ਅੱਪਡੇਟੇਬਲ ਰਿਜ਼ਲਟਸੈਟ ਆਬਜੈਕਟ ਦੀ ਵਰਤੋਂ ਕਾਲਮ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ, ਕਾਲਮਾਂ ਵਿੱਚ ਡੇਟਾ ਪਾਉਣ ਅਤੇ ਕਤਾਰਾਂ ਨੂੰ ਮਿਟਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇੱਕ ਰਿਜ਼ਲਟਸੈਟ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਯੋਗ ਬਣਾਉਣ ਲਈ, ਸਾਨੂੰ ਸਕ੍ਰੌਲ ਟਾਈਪ ਨੂੰ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਂ ਅਸੰਵੇਦਨਸ਼ੀਲ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ ਅਤੇ CONCUR ਟਾਈਪ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਯੋਗ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ।
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE.
ਪ੍ਰ #5) ਡਾਟਾਬੇਸ ਦਾ ਨਾਮ ਕਿਵੇਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਵੇ ਜੋ ਕਿ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ?
ਜਵਾਬ: ਅਸੀਂ ਡੇਟਾਬੇਸ ਮੇਟਾਡਾਟਾ ਆਬਜੈਕਟ ਦੀ getDatabaseProductName() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ।
ਸਿੱਟਾ
ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ, ਅਸੀਂ ਚਰਚਾ ਕੀਤੀ ਹੈ ਕਿ ਕੀ ਹਨ ResultSet, ResultSetMetaData, ਅਤੇ DatabaseMetaData ਇੰਟਰਫੇਸ ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਮਹੱਤਵਪੂਰਨ ਵਿਧੀਆਂ ਜੋ ਆਮ ਤੌਰ 'ਤੇ JDBC ਪ੍ਰੋਗਰਾਮਾਂ ਵਿੱਚ ਵਰਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਅਸੀਂ ਵੀ ਦੇਖਿਆ ਹੈResultSet ਦੀ ਵਰਤੋਂ ਕਰਕੇ DB ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਕਿਵੇਂ ਅਪਡੇਟ ਕਰਨਾ ਹੈ। ResultSetMetadata ਵਿੱਚ ResultSet ਬਾਰੇ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ ਜਿਵੇਂ ਕਿ ਕਾਲਮ ਦਾ ਨਾਮ, ਕਾਲਮ ਗਿਣਤੀ, ਅਤੇ ਹੋਰ।
DatabaseMetaData ਵਿੱਚ ਡੇਟਾਬੇਸ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ।
ਸਟੇਟਮੈਂਟ ਇੰਟਰਫੇਸ
Statement statemnt1 = conn.createStatement(); ResultSet rs1 = statemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”);
ਤਿਆਰ ਸਟੇਟਮੈਂਟ ਇੰਟਰਫੇਸ
PreparedStatement pstatemnt1 = conn.prepareStatement(insert_query); ResultSet rs1 = pstatemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”);
ਅਸੀਂ ਕਰ ਸਕਦੇ ਹਾਂ ਨਤੀਜਿਆਂ ਨੂੰ ਦੁਹਰਾਉਂਦੇ ਹੋਏ ਕਾਲਮਾਂ ਦਾ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ 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); }
ਨਤੀਜਾ ਸੈੱਟ ਕਿਸਮਾਂ
ਮੂਲ ਰੂਪ ਵਿੱਚ, ਅਸੀਂ ਰਿਜ਼ਲਟਸੈੱਟ ਵਿੱਚ ਡੇਟਾ/ਮੁੱਲਾਂ ਨੂੰ ਦੁਹਰਾ ਸਕਦੇ ਹਾਂ ਜੋ ਅੱਗੇ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ ਐਗਜ਼ੀਕਿਊਟ ਕੀਤੇ SQL ਸਟੇਟਮੈਂਟ ਦੇ ਆਉਟਪੁੱਟ ਦੇ ਰੂਪ ਵਿੱਚ ਵਾਪਸ ਆਏ ਹਨ। ਅਸੀਂ ਸਕ੍ਰੋਲੇਬਲ ਰਿਜ਼ਲਟਸੈੱਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮੁੱਲਾਂ ਨੂੰ ਹੋਰ ਦਿਸ਼ਾਵਾਂ ਵਿੱਚ ਦੁਹਰਾ ਸਕਦੇ ਹਾਂ। ਸਟੇਟਮੈਂਟ, PreparedStatement, ਅਤੇ CallableStatement ਆਬਜੈਕਟ ਬਣਾਉਂਦੇ ਸਮੇਂ ਅਸੀਂ ResultSet ਦੀ ਕਿਸਮ ਅਤੇ ਸਮਰੂਪਤਾ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹਾਂ।
ResultSet ਵਿੱਚ 3 ਕਿਸਮਾਂ ਹਨ। ਉਹ ਹਨ:
- TYPE_FORWARD_ONLY: ਇਹ ਡਿਫਾਲਟ ਵਿਕਲਪ ਹੈ, ਜਿੱਥੇ ਕਰਸਰ ਸ਼ੁਰੂ ਤੋਂ ਅੰਤ ਤੱਕ ਚਲਦਾ ਹੈ ਅਰਥਾਤ ਅੱਗੇ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ।
- TYPE_SCROLL_INSENSITIVE: ਇਸ ਕਿਸਮ ਵਿੱਚ, ਇਹ ਕਰਸਰ ਨੂੰ ਅੱਗੇ ਅਤੇ ਪਿੱਛੇ ਦੋਵਾਂ ਦਿਸ਼ਾਵਾਂ ਵਿੱਚ ਜਾਣ ਲਈ ਬਣਾ ਦੇਵੇਗਾ। ਜੇਕਰ ਅਸੀਂ ਸਟੋਰ ਕੀਤੇ ਡੇਟਾ ਨੂੰ ਦੁਹਰਾਉਂਦੇ ਹੋਏ ਡੇਟਾ ਵਿੱਚ ਕੋਈ ਬਦਲਾਅ ਕਰਦੇ ਹਾਂ ਤਾਂ ਇਹ ਡੇਟਾਸੈਟ ਵਿੱਚ ਅਪਡੇਟ ਨਹੀਂ ਹੋਵੇਗਾ ਜੇਕਰ ਕੋਈ DB ਵਿੱਚ ਡੇਟਾ ਬਦਲਦਾ ਹੈ। ਕਿਉਂਕਿ ਡੈਟਾਸੈੱਟ ਕੋਲ ਉਸ ਸਮੇਂ ਤੋਂ ਡਾਟਾ ਹੁੰਦਾ ਹੈ ਜਦੋਂ SQL ਪੁੱਛਗਿੱਛ ਵਾਪਸ ਕਰਦੀ ਹੈਡੇਟਾ।
- TYPE_SCROLL_SENSITIVE: ਇਹ TYPE_SCROLL_INSENSITIVE ਦੇ ਸਮਾਨ ਹੈ, ਫਰਕ ਇਹ ਹੈ ਕਿ ਜੇਕਰ ਕੋਈ ਵੀ SQL ਕਿਊਰੀ ਦੁਆਰਾ ਡੇਟਾ ਵਾਪਸ ਕਰਨ ਤੋਂ ਬਾਅਦ ਡੇਟਾ ਨੂੰ ਅਪਡੇਟ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਇਹ ਦੁਹਰਾਉਣਾ ਡੇਟਾਸੈਟ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਨੂੰ ਦਰਸਾਏਗਾ।
ਨਤੀਜਾ ਸੈੱਟ ਸਮਰੂਪਤਾ
ਰਿਜ਼ਲਟਸੈੱਟ ਵਿੱਚ ਸਮਰੂਪਤਾ ਦੇ 2 ਢੰਗ ਹਨ। ਉਹ ਹਨ:
- ResultSet.CONCUR_READ_ONLY: ਇਹ ਡਿਫੌਲਟ ਕਨਕਰੰਸੀ ਮੋਡ ਹੈ। ਅਸੀਂ ਸਿਰਫ਼ ਰਿਜ਼ਲਟਸੈੱਟ ਵਿਚਲੇ ਡੇਟਾ ਨੂੰ ਪੜ੍ਹ ਸਕਦੇ ਹਾਂ। ਅੱਪਡੇਟ ਲਾਗੂ ਨਹੀਂ ਹੈ।
- ਨਤੀਜਾ ਸੈੱਟ। ਨਤੀਜੇ ਸੈੱਟ ਕਿਸਮਾਂ। ਉਸ ਸਥਿਤੀ ਵਿੱਚ, ਸਾਨੂੰ ਇਹ ਦੇਖਣ ਦੀ ਲੋੜ ਹੈ ਕਿ ਕੀ ਉਹ supportsResultSetConcurrency() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਾਡੀ ਲੋੜੀਦੀ ਕਿਸਮ ਅਤੇ ਸਮਰੂਪਤਾ ਮੋਡ ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ।
ResultSet ਇੰਟਰਫੇਸ ਵਿੱਚ ਢੰਗ
ResultSet ਵਿਧੀਆਂ ਦੀਆਂ 4 ਸ਼੍ਰੇਣੀਆਂ ਹਨ। ਉਹ ਹਨ:
- ਨੈਵੀਗੇਸ਼ਨਲ ਢੰਗ
- ਪ੍ਰਾਪਤ ਢੰਗ
- ਸੈਟਰ ਢੰਗ
- ਫੁਟਕਲ ਢੰਗ
ਪਹਿਲਾਂ, ਅਸੀਂ ਨੈਵੀਗੇਸ਼ਨਲ ਤਰੀਕਿਆਂ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ ਅਤੇ ਫਿਰ ਅੱਗੇ ਵਧਾਂਗੇ।
#1) ਨੈਵੀਗੇਸ਼ਨਲ ਢੰਗ
ਇਸ ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਸਰ ਨੂੰ ਡੈਟਾਸੈੱਟ ਦੇ ਦੁਆਲੇ ਘੁੰਮਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
- ਬੂਲੀਅਨ ਪੂਰਨ(ਇੰਟ ਕਤਾਰ): ਇਸਦੀ ਵਰਤੋਂ ਕਰਸਰ ਨੂੰ ਨਿਰਧਾਰਤ ਕਤਾਰ ਵਿੱਚ ਲਿਜਾਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜੋ ਪੈਰਾਮੀਟਰ ਵਿੱਚ ਦਰਸਾਈ ਗਈ ਹੈ ਅਤੇ ਜੇਕਰ ਓਪਰੇਸ਼ਨ ਸਫਲ ਹੁੰਦਾ ਹੈ ਤਾਂ ਸਹੀ ਵਾਪਸ ਆਉਂਦਾ ਹੈ ਜਾਂ ਗਲਤ ਵਾਪਸ ਕਰਦਾ ਹੈ।
- ਅਰਥafterLast(): ਇਹ ResultSet ਕਰਸਰ ਨੂੰ ਆਖਰੀ ਕਤਾਰ ਤੋਂ ਬਾਅਦ ਜਾਣ ਲਈ ਬਣਾਉਂਦਾ ਹੈ।
- Void beforeFirst(): ਇਹ ResultSet ਕਰਸਰ ਨੂੰ ਪਹਿਲੀ ਕਤਾਰ ਤੋਂ ਪਹਿਲਾਂ ਜਾਣ ਲਈ ਬਣਾਉਂਦਾ ਹੈ।
- ਬੂਲੀਅਨ ਫਸਟ(): ਇਹ ਰਿਜ਼ਲਟਸੈੱਟ ਕਰਸਰ ਨੂੰ ਪਹਿਲੀ ਕਤਾਰ ਵਿੱਚ ਜਾਣ ਲਈ ਬਣਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਓਪਰੇਸ਼ਨ ਸਫਲ ਹੁੰਦਾ ਹੈ ਤਾਂ ਇਹ True ਵਾਪਸ ਕਰਦਾ ਹੈ ਨਹੀਂ ਤਾਂ False।
- Boolan last(): ਇਹ ResultSet ਕਰਸਰ ਨੂੰ ਆਖਰੀ ਕਤਾਰ ਵਿੱਚ ਜਾਣ ਲਈ ਬਣਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਓਪਰੇਸ਼ਨ ਸਫਲ ਹੁੰਦਾ ਹੈ ਤਾਂ ਇਹ True ਵਾਪਸ ਕਰਦਾ ਹੈ ਨਹੀਂ ਤਾਂ False।
- Boolan next(): ਇਹ ResultSet ਕਰਸਰ ਨੂੰ ਅਗਲੀ ਕਤਾਰ ਵਿੱਚ ਜਾਣ ਲਈ ਬਣਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਜ਼ਿਆਦਾ ਰਿਕਾਰਡ ਹਨ ਤਾਂ ਇਹ True ਅਤੇ ਜੇਕਰ ਕੋਈ ਹੋਰ ਰਿਕਾਰਡ ਨਹੀਂ ਹਨ ਤਾਂ False ਵਾਪਸ ਕਰਦਾ ਹੈ।
- ਬੁਲੀਅਨ ਪਿਛਲਾ(): ਇਹ ਰਿਜ਼ਲਟਸੈੱਟ ਕਰਸਰ ਨੂੰ ਪਿਛਲੀ ਕਤਾਰ 'ਤੇ ਜਾਣ ਲਈ ਬਣਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਓਪਰੇਸ਼ਨ ਸਫਲ ਹੁੰਦਾ ਹੈ ਤਾਂ ਇਹ ਸਹੀ ਵਾਪਸ ਕਰਦਾ ਹੈ ਨਹੀਂ ਤਾਂ ਗਲਤ।
- ਬੂਲੀਅਨ ਰਿਸ਼ਤੇਦਾਰ(): ਇਹ ਕਰਸਰ ਨੂੰ ਅੱਗੇ ਜਾਂ ਪਿੱਛੇ ਦਿਸ਼ਾ ਵਿੱਚ ਕਤਾਰਾਂ ਦੀ ਦਿੱਤੀ ਗਈ ਸੰਖਿਆ ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ।
- Int getRow(): ਇਹ ਮੌਜੂਦਾ ਕਤਾਰ ਨੰਬਰ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ResultSet ਆਬਜੈਕਟ ਹੁਣ ਇਸ਼ਾਰਾ ਕਰ ਰਿਹਾ ਹੈ।
- Void moveToCurrentRow(): ਇਹ ਕਰਸਰ ਨੂੰ ਵਾਪਸ ਲੈ ਜਾਂਦਾ ਹੈ ਮੌਜੂਦਾ ਕਤਾਰ ਜੇਕਰ ਇਹ ਵਰਤਮਾਨ ਵਿੱਚ ਇਨਸਰਟ ਕਤਾਰ ਵਿੱਚ ਹੈ।
- Void moveToInsertRow(): ਇਹ ਡੇਟਾਬੇਸ ਵਿੱਚ ਕਤਾਰ ਨੂੰ ਸੰਮਿਲਿਤ ਕਰਨ ਲਈ ਕਰਸਰ ਨੂੰ ਖਾਸ ਕਤਾਰ ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ। ਇਹ ਮੌਜੂਦਾ ਕਰਸਰ ਟਿਕਾਣੇ ਨੂੰ ਯਾਦ ਰੱਖਦਾ ਹੈ। ਇਸ ਲਈ ਅਸੀਂ ਸੰਮਿਲਨ ਤੋਂ ਬਾਅਦ ਕਰਸਰ ਨੂੰ ਮੌਜੂਦਾ ਕਤਾਰ ਵਿੱਚ ਲਿਜਾਣ ਲਈ moveToCurrentRow() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ।
ਇਸ ਟਿਊਟੋਰਿਅਲ ਵਿੱਚ,ਸਾਰੇ ਪ੍ਰੋਗਰਾਮ Java ਵਿੱਚ ਲਿਖੇ ਗਏ ਹਨ। ਅਸੀਂ ਜਾਵਾ 8 ਵਰਜਨ ਅਤੇ ਓਰੇਕਲ ਡੀਬੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ।
>>ਤੁਸੀਂ ਓਰੇਕਲ ਸਾਫਟਵੇਅਰ ਨੂੰ ਇੱਥੋਂ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ
>>ਤੁਸੀਂ ਜਾਵਾ ਸੰਸਕਰਣ 8 ਨੂੰ ਇੱਥੋਂ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ
ਇਸ ਵਿੱਚ ਕਦਮ-ਦਰ-ਕਦਮ Java ਇੰਸਟਾਲੇਸ਼ਨ ਪ੍ਰਕਿਰਿਆ ਹੈ।
JDBC ਨਤੀਜਾ ਸੈੱਟ ਉਦਾਹਰਨ ਪ੍ਰੋਗਰਾਮ:(ਨੈਵੀਗੇਸ਼ਨਲ ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ)
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 ਵਿੱਚ ), ਪਿਛਲਾ(), absolute(), ਰਿਸ਼ਤੇਦਾਰ() ਅਤੇ getRow() ਵਿਧੀਆਂ। ਇਹਨਾਂ ਤਰੀਕਿਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਅਸੀਂ ਤਿਆਰੀ ਸਟੇਟਮੈਂਟ ਵਿਧੀ ਵਿੱਚ ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE ਮੁੱਲ ਸੈੱਟ ਕਰਦੇ ਹਾਂ।
ਅੱਗੇ, ਅਸੀਂ ਇਸ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ ਕਿ ਨਤੀਜਾਸੈੱਟ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਢੰਗ ਕੀ ਹਨ:
#2) Getter Methods
ResultSet ਨੇ ਟੇਬਲ ਦੇ ਡੇਟਾ ਨੂੰ ਡੇਟਾਬੇਸ ਤੋਂ ਸਟੋਰ ਕੀਤਾ ਹੈ। ਰਿਜ਼ਲਟਸੈੱਟ ਵਿੱਚ ਸਾਰਣੀ ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ Getter ਢੰਗਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸਦੇ ਲਈ, ਸਾਨੂੰ ਕਾਲਮ ਇੰਡੈਕਸ ਵੈਲਯੂ ਜਾਂ ਕਾਲਮ ਨਾਮ ਪਾਸ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।
ਰਿਜ਼ਲਟਸੈੱਟ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਗਟਰ ਵਿਧੀਆਂ ਹਨ:
- int getInt (int ColumnIndex): ਇਹ ਇੱਕ int ਡਾਟਾ ਕਿਸਮ ਦੇ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਕਾਲਮ ਇੰਡੈਕਸ ਦੇ ਮੁੱਲ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- ਫਲੋਟ getFloat(int ColumnIndex): ਇਹ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਫਲੋਟ ਡਾਟਾ ਕਿਸਮ ਦੇ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਕਾਲਮ ਇੰਡੈਕਸ ਦਾ ਮੁੱਲ।
- java.sql.dategetDate(int ColumnIndex): ਇਹ ਇੱਕ ਮਿਤੀ ਮੁੱਲ ਦੇ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਕਾਲਮ ਸੂਚਕਾਂਕ ਦੇ ਮੁੱਲ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- int getInt(String ColumnName): ਇਹ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇੱਕ int ਡਾਟਾ ਕਿਸਮ ਦੇ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਕਾਲਮ ਦਾ ਮੁੱਲ।
- float getFloat(String ColumnName): ਇਹ ਇੱਕ ਫਲੋਟ ਡੇਟਾ ਕਿਸਮ ਦੇ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਕਾਲਮ ਦੇ ਮੁੱਲ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- Java.sql.date getDate(String ColumnName): ਇਸਦੀ ਵਰਤੋਂ ਮਿਤੀ ਮੁੱਲ ਦੇ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਕਾਲਮ ਦੇ ਮੁੱਲ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
ਗਿਟਰ ਵਿਧੀਆਂ ਹਨ। ਰਿਜ਼ਲਟਸੈੱਟ ਇੰਟਰਫੇਸ ਵਿੱਚ ਵੀ ਸਾਰੀਆਂ ਮੁੱਢਲੀਆਂ ਡਾਟਾ ਕਿਸਮਾਂ (ਬੂਲੀਅਨ, ਲੰਬੀ, ਡਬਲ) ਅਤੇ ਸਟ੍ਰਿੰਗ ਲਈ। ਅਸੀਂ ਡੇਟਾਬੇਸ ਤੋਂ ਇੱਕ ਐਰੇ ਅਤੇ ਬਾਈਨਰੀ ਕਿਸਮ ਦਾ ਡੇਟਾ ਵੀ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਸ ਵਿੱਚ ਇਸਦੇ ਲਈ ਤਰੀਕੇ ਵੀ ਹਨ।
#3) ਸੇਟਰ/ਅੱਪਡੇਟਰ ਢੰਗ
ਅਸੀਂ ਰਿਜ਼ਲਟਸੈੱਟ ਅੱਪਡੇਟਰ ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾਬੇਸ ਵਿੱਚ ਮੁੱਲ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਹ ਗੈਟਰ ਵਿਧੀਆਂ ਦੇ ਸਮਾਨ ਹੈ, ਪਰ ਇੱਥੇ ਸਾਨੂੰ ਡੇਟਾਬੇਸ ਵਿੱਚ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਖਾਸ ਕਾਲਮ ਲਈ ਮੁੱਲ/ਡਾਟਾ ਪਾਸ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।
ਰਿਜ਼ਲਟਸੈੱਟ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਅੱਪਡੇਟਰ ਵਿਧੀਆਂ ਹਨ:
- void updateInt(int ColumnIndex, int Value): ਇਹ ਇੱਕ int ਮੁੱਲ ਦੇ ਨਾਲ ਨਿਰਧਾਰਤ ਕਾਲਮ ਇੰਡੈਕਸ ਦੇ ਮੁੱਲ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- void updateFloat(int ColumnIndex, float f): ਇਹ ਫਲੋਟ ਮੁੱਲ ਦੇ ਨਾਲ ਨਿਰਧਾਰਤ ਕਾਲਮ ਇੰਡੈਕਸ ਦੇ ਮੁੱਲ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- void updateDate(int ColumnIndex, Date d): ਇਹ ਨਿਰਧਾਰਤ ਕਾਲਮ ਇੰਡੈਕਸ ਦੇ ਮੁੱਲ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈਮਿਤੀ ਮੁੱਲ ਦੇ ਨਾਲ।
- void updateInt(String ColumnName, int Value): ਇਹ ਦਿੱਤੇ ਗਏ int ਮੁੱਲ ਦੇ ਨਾਲ ਨਿਰਧਾਰਤ ਕਾਲਮ ਦੇ ਮੁੱਲ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- void updateFloat(String ColumnName, float f): ਇਹ ਦਿੱਤੇ ਗਏ ਫਲੋਟ ਮੁੱਲ ਦੇ ਨਾਲ ਨਿਰਧਾਰਤ ਕਾਲਮ ਦੇ ਮੁੱਲ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- Java.sql.date getDate(String) ColumnName): ਇਹ ਨਿਰਧਾਰਤ ਕਾਲਮ ਦੇ ਮੁੱਲ ਨੂੰ ਦਿੱਤੇ ਗਏ ਮਿਤੀ ਮੁੱਲ ਨਾਲ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ਸਾਰੇ ਮੁੱਢਲੇ ਡੇਟਾ ਕਿਸਮਾਂ (ਬੂਲੀਅਨ, ਲੰਬੀ, ਡਬਲ) ਅਤੇ ਸਟ੍ਰਿੰਗ ਲਈ ਅੱਪਡੇਟਰ ਵਿਧੀਆਂ ਹਨ। ResultSet ਇੰਟਰਫੇਸ ਵਿੱਚ ਵੀ।
ਅਪਡੇਟਰ ਵਿਧੀਆਂ ਸਿਰਫ਼ ResultSet ਆਬਜੈਕਟ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਅੱਪਡੇਟ ਕਰਦੀਆਂ ਹਨ। insertRow ਜਾਂ updateRow ਵਿਧੀ ਨੂੰ ਕਾਲ ਕਰਨ ਤੋਂ ਬਾਅਦ ਮੁੱਲਾਂ ਨੂੰ DB ਵਿੱਚ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਵੇਗਾ।
ਇੱਕ ਕਤਾਰ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ:
ਅਸੀਂ ਅੱਪਡੇਟਐਕਸ() ਵਿਧੀਆਂ ਨੂੰ ਕਾਲ ਕਰਕੇ ਇੱਕ ਕਤਾਰ ਵਿੱਚ ਡਾਟਾ ਅੱਪਡੇਟ ਕਰ ਸਕਦੇ ਹਾਂ। , ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਕਾਲਮ ਦਾ ਨਾਮ ਜਾਂ ਸੂਚਕਾਂਕ, ਅਤੇ ਮੁੱਲ ਪਾਸ ਕਰਨਾ। ਅਸੀਂ ਅਪਡੇਟਐਕਸ ਵਿਧੀ ਵਿੱਚ X ਦੀ ਥਾਂ 'ਤੇ ਕਿਸੇ ਵੀ ਡਾਟਾ ਕਿਸਮ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ। ਹੁਣ ਤੱਕ, ਅਸੀਂ ResultSet ਆਬਜੈਕਟ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਅਪਡੇਟ ਕੀਤਾ ਹੈ। DB ਵਿੱਚ ਡਾਟਾ ਅੱਪਡੇਟ ਕਰਨ ਲਈ, ਸਾਨੂੰ updateRow() ਵਿਧੀ ਨੂੰ ਕਾਲ ਕਰਨਾ ਪਵੇਗਾ।
ਇੱਕ ਕਤਾਰ ਸ਼ਾਮਲ ਕਰਨਾ:
ਸਾਨੂੰ ਕਰਸਰ ਨੂੰ ਮੂਵ ਕਰਨ ਲਈ moveToInsertRow() ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇੱਕ ਨਵੀਂ ਕਤਾਰ ਪਾਉਣ ਲਈ। ਅਸੀਂ ਇਸਨੂੰ ਨੇਵੀਗੇਸ਼ਨ ਵਿਧੀਆਂ ਸੈਕਸ਼ਨ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਕਵਰ ਕਰ ਚੁੱਕੇ ਹਾਂ। ਅੱਗੇ, ਸਾਨੂੰ ਕਤਾਰ ਵਿੱਚ ਡੇਟਾ ਜੋੜਨ ਲਈ updateX() ਵਿਧੀ ਨੂੰ ਕਾਲ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਸਾਨੂੰ ਸਾਰੇ ਕਾਲਮਾਂ ਲਈ ਡੇਟਾ ਪ੍ਰਦਾਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਨਹੀਂ ਤਾਂ ਇਹ ਉਸ ਵਿਸ਼ੇਸ਼ ਦੇ ਡਿਫੌਲਟ ਮੁੱਲ ਦੀ ਵਰਤੋਂ ਕਰੇਗਾਕਾਲਮ।
ਡਾਟਾ ਅੱਪਡੇਟ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਸਾਨੂੰ insertRow() ਵਿਧੀ ਨੂੰ ਕਾਲ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਫਿਰ ਕਰਸਰ ਦੀ ਸਥਿਤੀ ਨੂੰ ਉਸ ਕਤਾਰ 'ਤੇ ਵਾਪਸ ਲੈਣ ਲਈ, ਜਿਸ 'ਤੇ ਅਸੀਂ ਨਵੀਂ ਕਤਾਰ ਸ਼ਾਮਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਸੀ, ਮੂਵਟੋਕਰੈਂਟਰੋ () ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਨਤੀਜਾ ਸੈੱਟ ਉਦਾਹਰਨ:
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() ਵਿਧੀ ਵਿੱਚ ਡਾਟਾ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ। ਇੱਕ ਨਵੀਂ ਕਤਾਰ। absolute() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਅਸੀਂ ਕਰਸਰ ਨੂੰ 5ਵੀਂ ਕਤਾਰ ਵੱਲ ਪੁਆਇੰਟ ਕਰਨ ਲਈ ਬਣਾਇਆ ਹੈ। UpdateInt() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਸਾਰਣੀ ਵਿੱਚ 5ਵੇਂ ਕਰਮਚਾਰੀ ਦੀ ਨਵੀਂ ਆਈਡੀ ਨਾਲ EMPNUM ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਕੀਤੀ ਗਈ ਹੈ। ਉਸ ਤੋਂ ਬਾਅਦ, ਇਹ ਦੇਖਣ ਲਈ ਡੇਟਾ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ ਕਿ EMPNUM ਅੱਪਡੇਟ ਹੋਇਆ ਹੈ ਜਾਂ ਨਹੀਂ।
ਲਾਸਟ() ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਾਰਣੀ ਦੀ ਆਖਰੀ ਕਤਾਰ ਨੂੰ ਪੁਆਇੰਟ ਕਰਨ ਲਈ ਕਰਸਰ ਬਣਾਉ ਅਤੇ ਇਸਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤਾ। ਉਪਰੋਕਤ ਤਰਕ ਨੂੰ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਤਿਆਰੀ ਸਟੇਟਮੈਂਟ ਵਿਧੀ ਵਿੱਚ ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE ਮੁੱਲ ਸੈੱਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।
#4) ਫੁਟਕਲ ਢੰਗ
- void close(): ਇਸਦੀ ਵਰਤੋਂ ResultSet ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਅਤੇResultSet ਉਦਾਹਰਨ ਨਾਲ ਸੰਬੰਧਿਤ ਸਰੋਤ।
- ResultSetMetaData getMetaData(): ਇਹ ResultSetMetaData ਇੰਸਟੈਂਸ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਪੁੱਛਗਿੱਛ ਆਉਟਪੁੱਟ ਦੇ ਕਾਲਮਾਂ ਦੀ ਕਿਸਮ ਅਤੇ ਵਿਸ਼ੇਸ਼ਤਾ ਬਾਰੇ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ। ਅਸੀਂ ਅਗਲੇ ਭਾਗ ਵਿੱਚ ResultSetMetaData ਬਾਰੇ ਹੋਰ ਜਾਣਾਂਗੇ।
ResultSetMetaData
Metadata ਕੀ ਹੈ?
Metadata ਦਾ ਮਤਲਬ ਹੈ ਡੇਟਾ ਬਾਰੇ ਡੇਟਾ। ਇਸ ਇੰਟਰਫੇਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਅਸੀਂ ਰਿਜ਼ਲਟਸੈੱਟ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਾਂਗੇ। ਇਹ 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) ਇਹ