આ ટ્યુટોરીયલ માહિતી પુનઃપ્રાપ્ત કરવા માટે JDBC ResultSet નો ઉપયોગ કેવી રીતે કરવો તે સમજાવે છે. અમે ઉદાહરણો સાથે ResultSetMetaData અને DatabaseMetaData ઇન્ટરફેસ વિશે પણ શીખીશું:
JDBC ટ્યુટોરીયલ શ્રેણી ના JDBC ડ્રાઇવર મેનેજર ટ્યુટોરીયલમાં, અમે JDBC નો ઉપયોગ કેવી રીતે કરવો તે શીખ્યા. ડ્રાઈવર મેનેજર અને તેની પદ્ધતિઓ, જાવા એપ્લીકેશનમાં JDBC પ્રિપેર્ડ સ્ટેટમેન્ટ.
આ ટ્યુટોરીયલમાં, આપણે જેડીબીસીમાં બાકી રહેલા ઈન્ટરફેસની ચર્ચા કરીશું. અમે અમારા અગાઉના ટ્યુટોરિયલ્સમાં સ્ટેટમેન્ટ, પ્રિપેર્ડ સ્ટેટમેન્ટ અને કૉલેબલ સ્ટેટમેન્ટ ઇન્ટરફેસને આવરી લીધા છે.
અહીં, અમે JDBC રિઝલ્ટસેટ, રિઝલ્ટસેટમેટાડેટા અને ડેટાબેઝમેટાડેટા ઇન્ટરફેસ, તેમની પદ્ધતિઓ અને Java પ્રોગ્રામમાં પદ્ધતિઓનો ઉપયોગ કેવી રીતે કરવો તે વિશે શીખીશું.
JDBC ResultSet Interface
ResultSet ઈન્ટરફેસ java.sql પેકેજમાં હાજર છે. તેનો ઉપયોગ જાવા પ્રોગ્રામમાં એસક્યુએલ સ્ટેટમેન્ટના અમલ પછી ડેટાબેઝ કોષ્ટકમાંથી પરત કરવામાં આવેલ ડેટાને સંગ્રહિત કરવા માટે થાય છે. ResultSet નો ઑબ્જેક્ટ પરિણામ ડેટા પર કર્સર પોઈન્ટ જાળવી રાખે છે. ડિફૉલ્ટમાં, પરિણામ ડેટાની પ્રથમ પંક્તિ પહેલાં કર્સરની સ્થિતિ.
આગળની() પદ્ધતિનો ઉપયોગ કર્સરને આગળની દિશામાં આગળની સ્થિતિમાં ખસેડવા માટે થાય છે. જો કોઈ વધુ રેકોર્ડ ન હોય તો તે FALSE પરત કરશે. તે કોઈપણ સ્ટેટમેન્ટ ઑબ્જેક્ટનો ઉપયોગ કરીને executeQuery() પદ્ધતિને કૉલ કરીને ડેટા પુનઃપ્રાપ્ત કરે છે. તે નિવેદન અથવા તૈયાર નિવેદન અથવા કૉલેબલ સ્ટેટમેન્ટ ઑબ્જેક્ટ હોઈ શકે છે. તૈયાર નિવેદન, અનેકૉલમના કોષ્ટકનું સ્કીમા નામ પરત કરે છે
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
ડેટાબેઝ મેટાડેટા ડેટાબેઝ ઈન્ટરફેસ જેવી માહિતી આપે છે. DatabaseName, Database version, અને તેથી વધુ.
DatabaseMetaData ઈન્ટરફેસની મહત્વની પદ્ધતિઓ:
પદ્ધતિનું નામ | વર્ણન27 |
---|---|
સ્ટ્રિંગ getDriverName() | તે જેડીબીસી ડ્રાઇવરનું નામ આપશે જેનો આપણે અમારા જાવા પ્રોગ્રામમાં ઉપયોગ કરી રહ્યા છીએ |
સ્ટ્રિંગ getDriverVersion() | તે JDBC ડ્રાઇવર વર્ઝન નંબર આપે છે |
સ્ટ્રિંગ getUserName() | તે ડેટાબેઝનું વપરાશકર્તાનામ પરત કરે છે જેનો આપણે ઉપયોગ કરીએ છીએ |
સ્ટ્રિંગ getDatabaseProductName() | તે પરત કરે છે ડેટાબેઝનું નામ જે આપણે છીએઉપયોગ કરીને |
સ્ટ્રિંગ getDatabaseProductVersion() | તે ડેટાબેઝનો વર્ઝન નંબર આપે છે જેનો આપણે ઉપયોગ કરીએ છીએ |
રિઝલ્ટસેટ getSchemas() | તે કનેક્ટેડ ડેટાબેઝમાં ઉપલબ્ધ સ્કીમાનાં નામ પરત કરે છે |
સ્ટ્રિંગ getStringFunctions() | તે કનેક્ટેડ ડેટાબેઝમાં ઉપલબ્ધ સ્ટ્રિંગ ફંક્શન્સની સૂચિ પરત કરે છે |
સ્ટ્રિંગ getTimeDateFunctions() | તે કનેક્ટેડ ડેટાબેઝમાં ઉપલબ્ધ સમય અને તારીખ કાર્યોની સૂચિ આપે છે |
સ્ટ્રિંગ getURL() | તે ડેટાબેઝ માટે URL પરત કરે છે31 |
બુલિયન isReadOnly() | તે આપે છે કે શું ડેટાબેઝ ફક્ત વાંચવા માટેના મોડમાં છે કે કેમ |
બુલિયન સપોર્ટ બેચઅપડેટ્સ() | તે ડેટાબેઝ બેચ અપડેટ્સને સપોર્ટ કરે છે કે કેમ તે પરત કરે છે |
બુલિયન સપોર્ટસેવપોઇન્ટ્સ() | તે ડેટાબેઝ સેવપોઇન્ટ્સને સપોર્ટ કરે છે કે કેમ તે પરત કરે છે |
બુલિયન સપોર્ટ સ્ટેટમેન્ટપુલિંગ() | તે પરત કરે છે કે શું ડેટાબેઝ સ્ટેટમેન્ટ પૂલિંગને સપોર્ટ કરે છે |
બુલિયન સપોર્ટ્સસ્ટોર્ડ પ્રોસીડર્સ() | તે આપે છે કે શું ડેટાબેઝ સંગ્રહિત પ્રક્રિયાઓને સપોર્ટ કરે છે |
બુલિયન સપોર્ટ કરે છેOuterJoins() | તે ડેટાબેઝ આઉટર જોઇનને સપોર્ટ કરે છે કે કેમ તે પરત કરે છે |
અહીં, અમે ડેટાબેઝ મેટાડેટા ઇન્ટરફેસની કેટલીક મહત્વપૂર્ણ પદ્ધતિઓ સૂચિબદ્ધ કરી છે. તમે નો સંદર્ભ લઈ શકો છો 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(ducers) અને મેથડમાં સપોર્ટ કરે છે. DatabaseMetaData ઈન્ટરફેસ.
નોંધવાના મુદ્દાઓ:
- JDBC ResultSet ઈન્ટરફેસનો ઉપયોગ ડેટાબેઝમાંથી ડેટા સ્ટોર કરવા અને અમારા જાવા પ્રોગ્રામમાં ઉપયોગ કરવા માટે થાય છે.
- અમે updateXXX() પદ્ધતિઓનો ઉપયોગ કરીને ડેટાને અપડેટ કરવા માટે ResultSetનો પણ ઉપયોગ કરી શકીએ છીએ.
- ResultSet ઑબ્જેક્ટ પરિણામ ડેટાની પ્રથમ પંક્તિ પહેલાં કર્સરને નિર્દેશ કરે છે. આગામી() પદ્ધતિનો ઉપયોગ કરીને, અમે ResultSet દ્વારા પુનરાવર્તિત કરી શકીએ છીએ.
- અમારી પાસે ResultSet ઑબ્જેક્ટમાં આગળ વધવા માટે ResultSet ની નેવિગેશનલ પદ્ધતિઓ છે
- ResultMetaData નો ઉપયોગ ResultSet વિશે વધુ માહિતી મેળવવા માટે થાય છે જેમ કે કૉલમનું નામ, કૉલમની સંખ્યા, કૉલમનો ડેટાટાઈપ, વગેરે.
- ડેટાબેઝમેટડેટાનો ઉપયોગ ડેટાબેઝ વિશેની માહિતી મેળવવા માટે થાય છે જેને અમે કનેક્ટ કર્યું છે
વારંવાર પૂછાતા પ્રશ્નો
પ્ર #1) તેનો ઉપયોગ શું છેરિઝલ્ટસેટ?
જવાબ: રિઝલ્ટસેટનો ઉપયોગ ડીબીમાંથી ડેટા સ્ટોર કરવા અને પુનઃપ્રાપ્ત કરવા માટે થાય છે. જ્યારે executeQuery() પદ્ધતિ એક્ઝિક્યુટ થઈ જાય, ત્યારે તે ResultSet ઑબ્જેક્ટ પરત કરશે. અમે અમારા પ્રોગ્રામમાં તે ResultSet ઑબ્જેક્ટનો ઉપયોગ લૉજિક કરવા માટે કરી શકીએ છીએ.
Q #2) રિઝલ્ટસેટ ખાલી છે કે નહીં તે કેવી રીતે તપાસવું?
જવાબ: IsResultSet ખાલી તપાસવા માટે length(), size() જેવી કોઈ પૂર્વવ્યાખ્યાયિત પદ્ધતિઓ ઉપલબ્ધ નથી. અમે પુનરાવર્તિત કરવા માટે નેક્સ્ટ() પદ્ધતિનો ઉપયોગ કરી શકીએ છીએ અને જો તે True પરત કરે છે, તો તે ખાલી નથી, જો તે False પરત કરે છે તો તેનો અર્થ થાય છે કે પરિણામ સેટ ખાલી છે.
પ્ર #3) શું તે શક્ય છે કે પરિણામસેટ શૂન્ય હોઈ શકે છે?
જવાબ: ના, executeQuery() પદ્ધતિ ResultSet ઑબ્જેક્ટ આપે છે જે ક્યારેય શૂન્ય ન હોઈ શકે.
પ્ર #4) અપડેટેબલ રિઝલ્ટસેટ શું છે?
જવાબ: અપડેટેબલ રિઝલ્ટસેટ ઑબ્જેક્ટનો ઉપયોગ કૉલમમાં ડેટા અપડેટ કરવા, કૉલમમાં ડેટા દાખલ કરવા અને પંક્તિઓ કાઢી નાખવા માટે થાય છે. રિઝલ્ટસેટને અપડેટ કરવા યોગ્ય તરીકે બનાવવા માટે, અમારે સ્ક્રોલ ટાઇપને સંવેદનશીલ અથવા અસંવેદનશીલ અને CONCUR ટાઇપને અપડેટ કરવા યોગ્ય બનાવવાની જરૂર છે.
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE.
પ્ર #5) કનેક્ટ થયેલ ડેટાબેઝ નામ કેવી રીતે મેળવવું?
જવાબ: આપણે DatabaseMetaData ઑબ્જેક્ટની getDatabaseProductName() પદ્ધતિનો ઉપયોગ કરી શકીએ છીએ.
ઉપસંહાર
આ ટ્યુટોરીયલમાં, આપણે ચર્ચા કરી છે કે શું છે રિઝલ્ટસેટ, રિઝલ્ટસેટમેટાડેટા અને ડેટાબેઝમેટાડેટા ઈન્ટરફેસ અને તેમની મહત્વની પદ્ધતિઓ જેડીબીસી પ્રોગ્રામ્સમાં સામાન્ય રીતે ઉપયોગમાં લેવાય છે. અમે પણ જોયા છેરિઝલ્ટસેટનો ઉપયોગ કરીને ડીબીમાં ડેટા કેવી રીતે અપડેટ કરવો. 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 સ્ટેટમેન્ટના આઉટપુટ તરીકે પરત ફર્યા છે. અમે સ્ક્રોલેબલ રિઝલ્ટસેટનો ઉપયોગ કરીને અન્ય દિશામાં મૂલ્યોનું પુનરાવર્તન કરી શકીએ છીએ. સ્ટેટમેન્ટ, પ્રિપેર્ડ સ્ટેટમેન્ટ અને કૉલેબલ સ્ટેટમેન્ટ ઑબ્જેક્ટ બનાવતી વખતે અમે રિઝલ્ટસેટના પ્રકાર અને એકરૂપતાનો ઉલ્લેખ કરી શકીએ છીએ.
રિઝલ્ટસેટમાં 3 પ્રકાર છે. તે છે:
- TYPE_FORWARD_ONLY: તે ડિફોલ્ટ વિકલ્પ છે, જ્યાં કર્સર શરૂઆતથી અંત સુધી એટલે કે આગળની દિશામાં ફરે છે.
- TYPE_SCROLL_INSENSITIVE: આ પ્રકારમાં, તે કર્સરને આગળ અને પાછળ બંને દિશામાં ખસેડશે. જો આપણે સંગ્રહિત ડેટાને પુનરાવર્તિત કરતી વખતે ડેટામાં કોઈ ફેરફાર કરીએ તો તે ડેટાસેટમાં અપડેટ થશે નહીં જો કોઈ DB માં ડેટા બદલશે. કારણ કે ડેટાસેટમાં એસક્યુએલ ક્વેરી પરત કરે છે ત્યારથીનો ડેટા હોય છેડેટા.
- TYPE_SCROLL_SENSITIVE: તે TYPE_SCROLL_INSENSITIVE જેવું જ છે, તફાવત એ છે કે SQL ક્વેરી ડેટા પરત કર્યા પછી જો કોઈ ડેટા અપડેટ કરે છે, જ્યારે તે પુનરાવર્તિત થાય છે ત્યારે તે ડેટાસેટમાં ફેરફારોને પ્રતિબિંબિત કરશે.
રિઝલ્ટસેટ કન્કરન્સી
રિઝલ્ટસેટમાં કન્કરન્સીના 2 મોડ્સ છે. તે છે:
- ResultSet.CONCUR_READ_ONLY: તે ડિફૉલ્ટ કન્કરન્સી મોડ છે. અમે ફક્ત રિઝલ્ટ સેટમાં ડેટા વાંચી શકીએ છીએ. અપડેટ લાગુ પડતું નથી.
- રિઝલ્ટસેટ.CONCUR_UPDATABLE: અમે ResultSet ઑબ્જેક્ટમાં ડેટા અપડેટ કરી શકીએ છીએ.
કેટલાક ડેટાબેઝ બધા માટે કન્કરન્સી મોડને સપોર્ટ કરતા નથી પરિણામ સેટ પ્રકારો. તે કિસ્સામાં, અમારે એ તપાસવાની જરૂર છે કે શું તેઓ supportsResultSetConcurrency() પદ્ધતિનો ઉપયોગ કરીને અમારા ઇચ્છિત પ્રકાર અને સહવર્તી મોડને સમર્થન આપે છે.
રિઝલ્ટસેટ ઇન્ટરફેસમાં પદ્ધતિઓ
રિઝલ્ટસેટ પદ્ધતિઓની 4 શ્રેણીઓ છે. તે છે:
- નેવિગેશનલ પદ્ધતિઓ
- મેથડ મેળવો
- સેટર પદ્ધતિઓ
- વિવિધ પદ્ધતિઓ
પ્રથમ, અમે નેવિગેશનલ મેથડની ચર્ચા કરીશું અને પછી આગળ વધીશું.
#1) નેવિગેશનલ મેથડસ
આ પદ્ધતિનો ઉપયોગ કર્સરને ડેટાસેટની આસપાસ ખસેડવા માટે થાય છે.
- બુલિયન એબ્સોલ્યુટ(ઇન્ટ પંક્તિ): તેનો ઉપયોગ કર્સરને સ્પષ્ટ કરેલ પંક્તિમાં ખસેડવા માટે થાય છે જે પેરામીટરમાં દર્શાવેલ છે અને જો ઑપરેશન સફળ થાય તો સાચું પરત કરે છે અને ખોટું પરત કરે છે.
- રહીafterLast(): તે ResultSet કર્સરને છેલ્લી પંક્તિ પછી ખસેડવા માટે બનાવે છે.
- Void beforeFirst(): તે ResultSet કર્સરને પ્રથમ પંક્તિ પહેલાં ખસેડવા માટે બનાવે છે.
- બુલિયન ફર્સ્ટ(): તે રિઝલ્ટસેટ કર્સરને પ્રથમ પંક્તિ પર જવા માટે બનાવે છે. જો ઓપરેશન સફળ થાય તો તે સાચું પરત કરે છે અન્યથા ખોટું.
- બુલિયન લાસ્ટ(): તે રિઝલ્ટસેટ કર્સરને છેલ્લી પંક્તિ પર જવા માટે બનાવે છે. જો ઓપરેશન સફળ થાય તો તે સાચું પરત કરે છે અન્યથા ખોટું.
- બુલિયન નેક્સ્ટ(): તે રિઝલ્ટસેટ કર્સરને આગલી પંક્તિ પર જવા માટે બનાવે છે. જો વધુ રેકોર્ડ્સ હોય તો તે True અને વધુ રેકોર્ડ ન હોય તો False પરત કરે છે.
- બૂલિયન અગાઉના(): તે રિઝલ્ટસેટ કર્સરને પાછલી પંક્તિ પર જવા માટે બનાવે છે. જો ઓપરેશન સફળ થાય તો તે સાચું પરત કરે છે અન્યથા ખોટું.
- બુલિયન રિલેટિવ(): તે કર્સરને આપેલ પંક્તિઓની સંખ્યા પર આગળ કે પાછળની દિશામાં ખસેડે છે.
- Int getRow(): તે વર્તમાન પંક્તિ નંબર પરત કરે છે જે ResultSet ઑબ્જેક્ટ અત્યારે નિર્દેશ કરી રહ્યું છે.
- Void moveToCurrentRow(): તે કર્સરને પાછું પર ખસેડે છે. વર્તમાન પંક્તિ જો તે હાલમાં દાખલ પંક્તિમાં છે.
- Void moveToInsertRow(): તે ડેટાબેઝમાં પંક્તિ દાખલ કરવા માટે કર્સરને ચોક્કસ પંક્તિ પર ખસેડે છે. તે કર્સરનું વર્તમાન સ્થાન યાદ રાખે છે. તેથી નિવેશ પછી કર્સરને વર્તમાન પંક્તિમાં ખસેડવા માટે આપણે moveToCurrentRow() પદ્ધતિનો ઉપયોગ કરી શકીએ છીએ.
આ ટ્યુટોરીયલમાં,બધા પ્રોગ્રામ જાવામાં લખેલા છે. અમે Java 8 વર્ઝન અને Oracle DB નો ઉપયોગ કર્યો છે.
>>તમે અહીંથી ઓરેકલ સોફ્ટવેર ડાઉનલોડ કરી શકો છો
>>તમે અહીંથી Java સંસ્કરણ 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(); } } }
આઉટપુટ:
કર્મચારી_વિગતો કોષ્ટકમાંનો ડેટા
![](/wp-content/uploads/guides/7033dwpdfa-2.png)
સ્પષ્ટીકરણ:
ઉપરોક્ત પ્રોગ્રામમાં આપણે first(), last(), beforeFirst(), afterLast(), next( ), અગાઉના(), સંપૂર્ણ(), સંબંધી() અને getRow() પદ્ધતિઓ પરિણામસેટમાં. આ પદ્ધતિઓનો ઉપયોગ કરવા માટે અમે તૈયારી સ્ટેટમેન્ટ પદ્ધતિમાં ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE મૂલ્યો સેટ કરીએ છીએ.
આગળ, અમે પરિણામ સેટમાં ગેટર પદ્ધતિઓ શું છે તેની ચર્ચા કરીશું:
#2) ગેટર મેથડ્સ
રિઝલ્ટસેટ ડેટાબેઝમાંથી કોષ્ટકનો ડેટા સંગ્રહિત કરે છે. પરિણામ સેટમાં કોષ્ટકની કિંમતો મેળવવા માટે ગેટર પદ્ધતિઓનો ઉપયોગ કરવામાં આવે છે. તેના માટે, આપણે કૉલમ ઈન્ડેક્સ વેલ્યુ અથવા કૉલમ નેમ પાસ કરવાની જરૂર છે.
રિઝલ્ટસેટમાં નીચે આપેલ ગેટર પદ્ધતિઓ છે:
- int getInt (int ColumnIndex): તેનો ઉપયોગ int ડેટા પ્રકાર તરીકે ઉલ્લેખિત કૉલમ ઇન્ડેક્સની કિંમત મેળવવા માટે થાય છે.
- ફ્લોટ getFloat(int ColumnIndex): તે મેળવવા માટે વપરાય છે. ફ્લોટ ડેટા પ્રકાર તરીકે ઉલ્લેખિત કૉલમ ઇન્ડેક્સનું મૂલ્ય.
- java.sql.dategetDate(int ColumnIndex): તેનો ઉપયોગ તારીખ મૂલ્ય તરીકે ઉલ્લેખિત કૉલમ ઇન્ડેક્સની કિંમત મેળવવા માટે થાય છે.
- int getInt(String ColumnName): તે મેળવવા માટે વપરાય છે int ડેટા પ્રકાર તરીકે ઉલ્લેખિત કૉલમનું મૂલ્ય.
- ફ્લોટ getFloat(String ColumnName): તેનો ઉપયોગ ફ્લોટ ડેટા પ્રકાર તરીકે ઉલ્લેખિત કૉલમની કિંમત મેળવવા માટે થાય છે.13
- Java.sql.date getDate(String ColumnName): તેનો ઉપયોગ તારીખની કિંમત તરીકે ઉલ્લેખિત કૉલમની કિંમત મેળવવા માટે થાય છે.
ગેટર પદ્ધતિઓ છે રિઝલ્ટસેટ ઈન્ટરફેસમાં પણ તમામ આદિમ ડેટા પ્રકારો (બુલિયન, લાંબા, ડબલ) અને સ્ટ્રિંગ માટે. અમે ડેટાબેઝમાંથી પણ એરે અને બાઈનરી પ્રકારનો ડેટા મેળવી શકીએ છીએ. તેની પાસે તે માટેની પદ્ધતિઓ પણ છે.
#3) સેટર/અપડેટર પદ્ધતિઓ
અમે રિઝલ્ટસેટ અપડેટર પદ્ધતિઓનો ઉપયોગ કરીને ડેટાબેઝમાં મૂલ્ય અપડેટ કરી શકીએ છીએ. તે ગેટર પદ્ધતિઓ જેવું જ છે, પરંતુ અહીં આપણે ડેટાબેઝમાં અપડેટ કરવા માટે ચોક્કસ કોલમ માટે મૂલ્યો/ડેટા પાસ કરવાની જરૂર છે.
રિઝલ્ટસેટમાં નીચે આપેલ અપડેટર પદ્ધતિઓ છે: 3
- void updateInt(int ColumnIndex, int Value): તેનો ઉપયોગ ઉલ્લેખિત કૉલમ ઈન્ડેક્સના મૂલ્યને પૂર્ણ મૂલ્ય સાથે અપડેટ કરવા માટે થાય છે.
- void updateFloat(int ColumnIndex, float f): તેનો ઉપયોગ ફ્લોટ વેલ્યુ સાથે ઉલ્લેખિત કૉલમ ઈન્ડેક્સની કિંમતને અપડેટ કરવા માટે થાય છે.
- vaid updateDate(int ColumnIndex, Date d): તેનો ઉપયોગ ઉલ્લેખિત કૉલમ ઈન્ડેક્સના મૂલ્યને અપડેટ કરવા માટે થાય છેતારીખ મૂલ્ય સાથે.
- void updateInt(String ColumnName, int Value): તેનો ઉપયોગ આપેલ int મૂલ્ય સાથે ઉલ્લેખિત કૉલમના મૂલ્યને અપડેટ કરવા માટે થાય છે.
- void updateFloat(String ColumnName, float f): તેનો ઉપયોગ આપેલ ફ્લોટ વેલ્યુ સાથે ઉલ્લેખિત કૉલમના મૂલ્યને અપડેટ કરવા માટે થાય છે.
- Java.sql.date getDate(String) કૉલમનું નામ): તેનો ઉપયોગ આપેલ તારીખ મૂલ્ય સાથે ઉલ્લેખિત કૉલમના મૂલ્યને અપડેટ કરવા માટે થાય છે.
તમામ આદિમ ડેટા પ્રકારો (બૂલિયન, લાંબા, ડબલ) અને સ્ટ્રિંગ માટે અપડેટર પદ્ધતિઓ છે. રિઝલ્ટસેટ ઈન્ટરફેસમાં પણ.
અપડેટર પદ્ધતિઓ ફક્ત રિઝલ્ટસેટ ઑબ્જેક્ટમાં ડેટાને અપડેટ કરે છે. insertRow અથવા updateRow મેથડને કૉલ કર્યા પછી DBમાં મૂલ્યો અપડેટ કરવામાં આવશે.
એક પંક્તિ અપડેટ કરવી:
અમે updateX() મેથડને કૉલ કરીને એક પંક્તિમાં ડેટા અપડેટ કરી શકીએ છીએ. , અપડેટ કરવા માટે કૉલમનું નામ અથવા અનુક્રમણિકા અને મૂલ્યો પસાર કરો. અમે અપડેટએક્સ પદ્ધતિમાં X ની જગ્યાએ કોઈપણ ડેટા પ્રકારનો ઉપયોગ કરી શકીએ છીએ. અત્યાર સુધી, અમે ResultSet ઑબ્જેક્ટમાં ડેટા અપડેટ કર્યો છે. DB માં ડેટા અપડેટ કરવા માટે, આપણે updateRow() પદ્ધતિને કૉલ કરવો પડશે.
એક પંક્તિ દાખલ કરવી:
અમે કર્સરને ખસેડવા માટે moveToInsertRow() નો ઉપયોગ કરવાની જરૂર છે. નવી પંક્તિ દાખલ કરવા માટે. નેવિગેશન પદ્ધતિઓ વિભાગમાં અમે આને પહેલાથી જ આવરી લીધું છે. આગળ, પંક્તિમાં ડેટા ઉમેરવા માટે આપણે updateX() પદ્ધતિને કૉલ કરવાની જરૂર છે. અમારે તમામ કૉલમ માટે ડેટા પ્રદાન કરવો જોઈએ નહીં તો તે ચોક્કસની ડિફોલ્ટ મૂલ્યનો ઉપયોગ કરશેકૉલમ.
ડેટા અપડેટ કર્યા પછી, આપણે insertRow() પદ્ધતિને કૉલ કરવાની જરૂર છે. પછી અમે નવી પંક્તિ દાખલ કરવાનું શરૂ કરતા પહેલા કર્સરની સ્થિતિને પાછી પંક્તિ પર લઈ જવા માટે, moveToCurrentRow() પદ્ધતિનો ઉપયોગ કરો.
રિઝલ્ટસેટ ઉદાહરણ:
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() પદ્ધતિ કર્સરને વર્તમાન પંક્તિને નિર્દેશિત કરે છે, હવે વર્તમાન પંક્તિ છેલ્લી પંક્તિ છે.
અપડેટXXX()પદ્ધતિઓ પંક્તિમાં મૂલ્યોને અપડેટ કરવા માટે વપરાય છે અને insertRow() પદ્ધતિએ ડેટા દાખલ કર્યો છે. એક નવી પંક્તિ. absolute() પદ્ધતિનો ઉપયોગ કરીને, અમે કર્સરને 5મી પંક્તિ તરફ નિર્દેશ કરે છે. કોષ્ટકમાં 5મા કર્મચારીના નવા આઈડી સાથે EMPNUM અપડેટ કરવા માટે UpdateInt() પદ્ધતિનો ઉપયોગ કરવામાં આવ્યો છે. તે પછી, EMPNUM અપડેટ થયેલ છે કે નહીં તે ચકાસવા માટે ડેટા પ્રદર્શિત કરો.
લાસ્ટ() નો ઉપયોગ કરીને કોષ્ટકની છેલ્લી પંક્તિ દર્શાવવા માટે કર્સર બનાવ્યો અને તેને પ્રદર્શિત કર્યો. ઉપરોક્ત તર્ક કરવા માટે, આપણે તૈયારી નિવેદન પદ્ધતિમાં ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE મૂલ્યો સેટ કરવાની જરૂર છે.
#4) વિવિધ પદ્ધતિઓ
- void close(): તેનો ઉપયોગ રિઝલ્ટસેટ ઇન્સ્ટન્સને બંધ કરવા અને તેને ખાલી કરવા માટે થાય છે.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) | તે |