Овај водич објашњава како да користите ЈДБЦ РесултСет за преузимање података. Такође ћемо научити о интерфејсима РесултСетМетаДата и ДатабасеМетаДата са примерима:
У водичу ЈДБЦ ДриверМанагер из серије ЈДБЦ водича , научили смо како да користимо ЈДБЦ ДриверМанагер и његове методе, ЈДБЦ ПрепаредСтатемент у Јава апликацијама.
У овом водичу ћемо разговарати о преосталим интерфејсима у ЈДБЦ-у. У нашим претходним туторијалима смо покрили интерфејсе Статемент, ПрепаредСтатемент и ЦаллаблеСтатемент.
Овде ћемо научити о интерфејсима ЈДБЦ РесултСет, РесултСетМетаДата и ДатабасеМетаДата, њиховим методама и начину коришћења метода у Јава програму.
ЈДБЦ Интерфејс РесултСет
Интерфејс РесултСет је присутан у пакету јава.скл. Користи се за складиштење података који се враћају из табеле базе података након извршења СКЛ наредби у Јава програму. Објект РесултСет одржава тачку курсора на подацима резултата. Подразумевано, курсор се поставља пре првог реда података резултата.
Метода нект() се користи за померање курсора на следећу позицију у правцу унапред. Вратиће ФАЛСЕ ако више нема записа. Он преузима податке позивањем методе екецутеКуери() користећи било који од објеката исказа. То може бити објекат Статемент или ПрепаредСтатемент или ЦаллаблеСтатемент. ПрепаредСтатемент, ивраћа име шеме табеле колоне
РесултСетМетаДата Пример
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)); } } }
ИЗЛАЗ:
Објашњење:
У горњем програму, имплементирали смо методе гетЦолумнЦоунт(),гетЦолумнНаме(), гетЦолумнТипеНаме(), гетТаблеНаме() и гетСцхемаНаме() у интерфејс РесултСетМетаДата.
ДатабасеМетаДата
Интерфејс ДатабасеМетаДата даје информације о бази података попут Име базе података, верзија базе података итд.
Важне методе интерфејса ДатабасеМетаДата:
Назив методе | Опис |
---|---|
Стринг гетДриверНаме() | Вратиће име ЈДБЦ драјвера који користимо у нашем Јава програму |
Стринг гетДриверВерсион() | Враћа број верзије ЈДБЦ драјвера |
Стринг гетУсерНаме() | Враћа корисничко име базе података коју користимо |
Стринг гетДатабасеПродуцтНаме() | Враћа назив базе података која јесмоусинг |
Стринг гетДатабасеПродуцтВерсион() | Враћа број верзије базе података коју користимо |
РесултСет гетСцхемас() | Враћа имена шема доступних у повезаној бази података |
Стринг гетСтрингФунцтионс() | Враћа листу стринг функција доступних у повезаној бази података |
Стринг гетТимеДатеФунцтионс() | То враћа листу функција времена и датума доступних у повезаној бази података |
Стринг гетУРЛ() | Враћа УРЛ за базу података |
Боолеан исРеадОнли() | Враћа да ли је база података у режиму само за читање |
Боолеан суппортсБатцхУпдатес() | Враћа да ли база података подржава пакетна ажурирања |
Боолеан суппортсСавепоинтс() | Враћа да ли База података подржава Савепоинтс |
Боолеан суппортсСтатементПоолинг() | Враћа да ли База података подржава Обједињавање изјава |
Боолеан суппортсСторедПроцедурес() | Враћа да ли база података подржава ускладиштене процедуре |
Боолеан суппортсОутерЈоинс() | Враћа да ли база података подржава Оутер Јоин |
Овде смо навели неке важне методе интерфејса ДатабасеМетаДата. Можете се позвати названични сајт Орацле где можете видети све методе доступне у интерфејсу ДатабасеМетаДата.
Пример ДатабасеМетаДата:
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()); } }
ИЗЛАЗ:
Објашњење:
У горњем програму смо користили/имплементирали гетДриверНаме(), гетДриверВерсион() , гетУсерНаме(), гетДатабасеПродуцтНаме(), гетДатабасеПродуцтВерсион(), гетСтрингФунцтионс(), гетТимеДатеФунцтионс(), гетУРЛ(), исРеадОнли(), суппортсБатцхУпдатес(), суппортсСтатементПоолинг(), суппортсСавепоинтс(), суппортсОу)СторедЈоцед ДатабасеМетаДата Интерфејс.
Тачке које треба напоменути:
- ЈДБЦ РесултСет интерфејс се користи за чување података из базе података и њихово коришћење у нашем Јава програму.
- Такође можемо да користимо РесултСет за ажурирање података помоћу метода упдатеКСКСКС().
- Објекат РесултСет показује курсор на пре првог реда података резултата. Користећи нект() метод, можемо итерирати кроз РесултСет.
- Имамо навигационе методе РесултСет-а за даље кретање у РесултСет објекту
- РесултМетаДата се користи за добијање више информација о РесултСет-у као што је назив колоне, број колона, тип података колоне, итд.
- ДатабасеМетДата се користи за добијање информација о бази података коју смо повезали
Често постављана питања
П #1) Чему служиРесултСет?
Одговор: РесултСет се користи за складиштење и преузимање података из ДБ-а. Када се изврши метода екецутеКуери(), она ће вратити РесултСет објекат. Можемо да користимо тај РесултСет објекат у нашем програму да извршимо логику.
П #2) Како проверити да ли је РесултСет празан или не?
Одговор: Не постоје унапред дефинисане методе као што су ленгтх(), сизе() за проверу ИсРесултСет Емпти. Можемо користити метод нект() за понављање и ако врати Труе, онда није празан, ако врати Фалсе значи да је РесултСет празан.
П #3) Да ли је могуће да РесултСет може бити нулл?
Одговор: Не, метода екецутеКуери() враћа објекат РесултСет који можда никада неће бити нулл.
П #4) Шта је ажурни РесултСет?
Одговор: Објекат РесултСет који се може ажурирати се користи за ажурирање података у колони, уметање података у колоне и брисање редова. Да бисмо РесултСет направили као ажурни, потребно је да тип померања учинимо осетљивим или неосетљивим и тип ЦОНЦУР као ажурни.
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE.
П #5) Како добити име базе података које је повезано?
Одговор: Можемо користити гетДатабасеПродуцтНаме() метод ДатабасеМетаДата објекта.
Закључак
У овом водичу смо разговарали о томе шта су интерфејси РесултСет, РесултСетМетаДата и ДатабасеМетаДата и њихове важне методе које се обично користе у ЈДБЦ програмима. Такође смо виделикако ажурирати податке у ДБ користећи РесултСет. РесултСетМетадата садржи информације о скупу резултата као што је назив колоне, број колона и тако даље.
ДатабасеМетаДата садржи информације о бази података.
&лт;
Интерфејс изјаве
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”);
Можемо користите метод гетКс() да бисте добили податке о колонама док се понављате кроз резултате где је Кс – тип података колоне. Можемо користити или називе колона или индекс да бисмо добили вредности користећи гетКс() методе.
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); }
Такође можемо поменути број индекса колоне уместо назива колоне у гетКс() методама.
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); }
Типови РесултСет-а
Подразумевано, можемо итерирати податке/вредности у РесултСет-у који су се вратили као излаз извршене СКЛ наредбе у правцу унапред. Можемо итерирати вредности у другим правцима користећи Сцроллабле РесултСет. Можемо навести тип и конкурентност РесултСет-а док креирамо објекте Статемент, ПрепаредСтатемент и ЦаллаблеСтатемент.
Постоје 3 типа у РесултСет-у. Они су:
- ТИПЕ_ФОРВАРД_ОНЛИ: То је подразумевана опција, где се курсор помера од почетка до краја, тј. у правцу унапред.
- ТИПЕ_СЦРОЛЛ_ИНСЕНСИТИВЕ: У овом типу, курсор ће се померати и напред и назад. Ако извршимо било какве промене у подацима док понављамо ускладиштене податке, они се неће ажурирати у скупу података ако неко промени податке у ДБ. Зато што скуп података има податке од тренутка када је СКЛ упит вратиоПодаци.
- ТИПЕ_СЦРОЛЛ_СЕНСИТИВЕ: Слично је ТИПЕ_СЦРОЛЛ_ИНСЕНСИТИВЕ, разлика је у томе што неко ажурира податке након што је СКЛ упит вратио податке, док ће итерација одражавати промене у скупу података.
Конкуренција скупа резултата
Постоје 2 режима паралелности у скупу резултата. Они су:
- РесултСет.ЦОНЦУР_РЕАД_ОНЛИ: То је подразумевани режим истовременог рада. Можемо само да читамо податке у РесултСет-у. Ажурирање није применљиво.
- РесултСет.ЦОНЦУР_УПДАТАБЛЕ: Можемо ажурирати податке у РесултСет објекту.
Неке базе података не подржавају режим истовремености за све Типови скупова резултата. У том случају, морамо да проверимо да ли подржавају наш жељени тип и режим истовремености помоћу методе суппортсРесултСетЦонцурренци().
Методе у интерфејсу РесултСет
Постоје 4 категорије метода РесултСет. То су:
- Навигационе методе
- Методе добијања
- Методе постављача
- Разне методе
Прво ћемо разговарати о методама навигације, а затим ћемо кренути даље.
#1) Методе навигације
Овај метод се користи за померање курсора око скупа података.
- Боолеан абсолуте(инт ров): Користи се за померање курсора на наведени ред који се помиње у параметру и враћа труе ако је операција успешна, иначе враћа фалсе.
- ВоидафтерЛаст(): Омогућава да се РесултСет курсор помера после последњег реда.
- Воид бефореФирст(): Омогућава да се курсор РесултСет помера пре првог реда.
- Боолеан фирст(): Омогућава да се курсор РесултСет помери у први ред. Враћа Труе ако је операција успешна, иначе Фалсе.
- Боолеан ласт(): То чини да се курсор РесултСет помери на последњи ред. Враћа Труе ако је операција успешна, иначе Фалсе.
- Боолеан нект(): То чини да се курсор РесултСет помери на следећи ред. Враћа Труе ако има више записа и Фалсе ако више нема записа.
- Боолеан превиоус(): То чини да се курсор РесултСет помери на претходни ред. Враћа Труе ако је операција успешна, иначе Фалсе.
- Боолеанрелатив(): Помера курсор на дати број редова било у правцу унапред или уназад.
- Инт гетРов(): Враћа тренутни број реда на који објекат РесултСет сада показује.
- Воид мовеТоЦуррентРов(): Помера курсор назад на тренутни ред ако је тренутно у реду за уметање.
- Воид мовеТоИнсертРов(): Помера курсор на одређени ред да би уметнуо ред у базу података. Памти тренутну локацију курсора. Тако да можемо користити метод мовеТоЦуррентРов() да померимо курсор у тренутни ред након уметања.
У овом водичу,сви програми су написани на Јави. Користили смо Јава 8 верзију и Орацле ДБ.
&гт;&гт;Орацле софтвер можете преузети одавде
&гт;&гт;Овде можете преузети Јава верзију 8
Има корак по корак процес Јава инсталације.
ЈДБЦ РесултСет Пример програма:(Коришћење метода навигације)
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(); } } }
ИЗЛАЗ:
Подаци у табели са подацима о запосленима
Објашњење:
У горњем програму имплементирали смо фирст(), ласт(), бефореФирст(), афтерЛаст(), нект( ), превиоус(), абсолуте(),релатив() и гетРов() методе у РесултСет-у. Да бисмо користили ове методе, постављамо вредности РесултСет.ТИПЕ_СЦРОЛЛ_СЕНСИТИВЕ, РесултСет.ЦОНЦУР_УПДАТАБЛЕ у методу припремеСтатемент.
Следеће ћемо разговарати о томе шта су Геттер методе у РесултСет-у:
#2) Геттер Метходс
РесултСет је ускладиштио податке табеле из базе података. Геттер методе се користе за добијање вредности табеле у РесултСет-у. За то морамо да проследимо или вредност индекса колоне или име колоне.
Следеће су методе добијања у РесултСет-у:
- инт гетИнт (инт ЦолумнИндек): Користи се за добијање вредности наведеног индекса колоне као инт типа података.
- флоат гетФлоат(инт ЦолумнИндек): Користи се за добијање вредност наведене колоне Индекс као флоат тип података.
- јава.скл.датегетДате(инт ЦолумнИндек): Користи се за добијање вредности наведене колоне Индекс као вредност датума.
- инт гетИнт(Стринг ЦолумнНаме): Користи се за добијање вредност наведене колоне као инт тип података.
- флоат гетФлоат(Стринг ЦолумнНаме): Користи се за добијање вредности наведене колоне као типа података флоат.
- Јава.скл.дате гетДате(Стринг ЦолумнНаме): Користи се за добијање вредности наведене колоне као вредности датума.
Постоје методе преузимања за све примитивне типове података (Боолеан, лонг, доубле) и стринг такође у РесултСет интерфејсу. Низ и бинарни тип података можемо добити и из базе података. Такође има методе за то.
#3) Методе постављача/ажурирања
Можемо ажурирати вредност у бази података помоћу метода РесултСет Упдатер. Слично је Геттер методама, али овде морамо да проследимо вредности/податке за одређену колону да би се ажурирали у бази података.
Следеће су методе ажурирања у РесултСет-у:
- воид упдатеИнт(инт ЦолумнИндек, инт Валуе): Користи се за ажурирање вредности наведене колоне Индек са инт вредношћу.
- воид упдатеФлоат(инт ЦолумнИндек, флоат ф): Користи се за ажурирање вредности наведене колоне Индекс са флоат вредношћу.
- воид упдатеДате(инт ЦолумнИндек, Дате д): Користи се за ажурирање вредности наведене колоне Индексса вредношћу датума.
- воид упдатеИнт(Стринг ЦолумнНаме, инт Валуе): Користи се за ажурирање вредности наведене колоне са датом вредношћу инт.
- воид упдатеФлоат(Стринг ЦолумнНаме, флоат ф): Користи се за ажурирање вредности наведене колоне са датом флоат вредношћу.
- Јава.скл.дате гетДате(Стринг ЦолумнНаме): Користи се за ажурирање вредности наведене колоне са датом вредношћу датума.
Постоје методе ажурирања за све примитивне типове података (Боолеан, лонг, доубле) и Стринг такође у РесултСет интерфејсу.
Методе ажурирања само ажурирају податке у РесултСет објекту. Вредности ће бити ажуриране у ДБ након позивања метода инсертРов или упдатеРов.
Ажурирање реда:
Можемо ажурирати податке у реду позивањем метода упдатеКс() , прослеђујући назив колоне или индекс и вредности за ажурирање. Можемо користити било који тип података уместо Кс у методи упдатеКс. До сада смо ажурирали податке у РесултСет објекту. Да бисмо ажурирали податке у ДБ-у, морамо позвати метод упдатеРов().
Уметање реда:
Морамо користити мовеТоИнсертРов() да померимо курсор да бисте уметнули нови ред. Ово смо већ покрили у одељку Методе навигације. Затим морамо позвати метод упдатеКс() да бисмо додали податке у ред. Требало би да обезбедимо податке за све колоне, иначе ће користити подразумевану вредност тог одређеногколона.
Након ажурирања података, треба да позовемо метод инсертРов(). Затим користите метод мовеТоЦуррентРов() да вратите позицију курсора на ред у коме смо били пре него што смо почели да убацујемо нови ред.
Пример скупа резултата:
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(); } } }
ИЗЛАЗ:
Објашњење:
У горњем програму оно што смо урадили је прво, сачували смо податке табеле Емплоиее_детаилс у објекту РесултСет помоћу СЕЛЕЦТ упита. Затим смо приказали податке последњег реда у табели емплоиее_детаилс користећи ласт() методу РесултСет. мовеТоИнсертРов() метода прави курсор да показује тренутни ред, сада је тренутни ред последњи ред.
упдатеКСКСКС() методе које се користе за ажурирање вредности у ред и инсертРов() метода је убацила податке у нови ред. Користећи апсолутни() метод, натерали смо курсор да показује на 5. ред. УпдатеИнт() метода је коришћена за ажурирање ЕМПНУМ-а са новим ИД-ом 5. запосленог у табели. Након тога, приказао је податке да провери да ли је ЕМПНУМ ажуриран или не.
Направио курсор да покаже последњи ред табеле користећи ласт() и приказао га. Да бисмо извршили горњу логику, потребно је да поставимо РесултСет.ТИПЕ_СЦРОЛЛ_ИНСЕНСИТИВЕ, РесултСет.ЦОНЦУР_УПДАТАБЛЕ вредности у методу припремеСтатемент.
#4) Разне методе
- воид цлосе(): Користи се за затварање РесултСет инстанце и ослобађањересурси повезани са РесултСет инстанцом.
- РесултСетМетаДата гетМетаДата(): Враћа РесултСетМетаДата инстанцу. Има информације о типу и својству колона излаза упита. Сазнаћемо више о РесултСетМетаДата у следећем одељку.
РесултСетМетаДата
Шта су метаподаци?
Метаподаци означава податке о подацима. Користећи овај интерфејс, добићемо више информација о РесултСет-у. Доступан је у пакету јава.скл. Сваки РесултСет објекат је повезан са једним РесултСетМетаДата објектом.
Овај објекат ће имати детаље о својствима колона као што су тип података колоне, име колоне, број колона, име табеле, име шеме итд., Објекат РесултСетМетаДата можемо добити користећи гетМетаДата() метод РесултСет.
Синтакса РесултСетМетаДата:
PreparedStatement pstatemnt1 = conn.prepareStatement(insert_query); ResultSet rs1 = pstatemnt1.executeQuery(“Select * from EMPLOYEE_DETAILS”); ResultSetMetaData rsmd = rs.getMetaData();
Важне методе РесултСетМетаДата интерфејса:
Назив методе | Опис |
---|---|
Стринг гетЦолумнНаме(инт цолумн) | Враћа име колоне одређене колоне |
Стринг гетЦолумнТипеНаме(инт цолумн) | Враћа тип података одређена колона коју смо проследили као параметар |
Стринг гетТаблеНаме(инт цолумн) | Враћа име табеле колоне |
Стринг гетСцхемаНаме(инт цолумн) | То |