jdbc resultset how use java resultset retrieve data
Овај водич објашњава како се користи ЈДБЦ РесултСет за преузимање података. Такође ћемо научити о интерфејсима РесултСетМетаДата и ДатабасеМетаДата са примерима:
У ЈДБЦ ДриверМанагер туториал оф ЈДБЦ туториал сериес , научили смо како да користимо ЈДБЦ ДриверМанагер и његове методе, ЈДБЦ ПрепаредСтатемент у Јава апликацијама.
У овом упутству ћемо размотрити преостале интерфејсе у ЈДБЦ. Обрађивали смо интерфејсе Статемент, ПрепаредСтатемент и ЦаллаблеСтатемент у нашим претходним водичима.
Овде ћемо научити о интерфејсима ЈДБЦ РесултСет, РесултСетМетаДата и ДатабасеМетаДата, њиховим методама и начину употребе метода у програму Јава.
Шта ћете научити:
ЈДБЦ РесултСет Интерфаце
РесултСет Интерфаце је присутан у пакету јава.скл. Користи се за чување података који се враћају из табеле базе података након извршавања СКЛ израза у Јава програму. Објект РесултСет одржава тачку курсора на резултатима података. По дефаулту, курсор се налази испред првог реда података резултата.
Следећа () метода се користи за померање курсора на следећу позицију у правцу напред. Вратиће ФАЛСЕ ако нема више записа. Дохваћа податке позивањем методе екецутеКуери () користећи било који од објеката израза. То може бити Статемент или ПрепаредСтатемент или ЦаллаблеСтатемент објекат. Интерфејси ПрепаредСтатемент и ЦаллаблеСтатемент су под-интерфејси интерфејса Статемент.
Интерфејс изјаве
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
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
FIRST NAME = ' + rs.getString(3)); //Moving the cursor to point last row rs.last(); System.out.println('LAST ROW
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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('
EMP NUM = ' + rs.getInt('empNum') + '
LAST NAME = '+ rs.getString(2)+'
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();
Важне методе интерфејса РесултСетМетаДата:
Назив методе | Опис |
---|---|
боолеан исЦасеСенситиве (инт колона) | Враћа тачно ако је дата колона осетљива на велика и мала слова, у супротном је нетачно |
Низ гетЦолумнНаме (инт колона) | Враћа назив колоне одређене колоне |
Стринг гетЦолумнТипеНаме (инт колона) | Враћа тип података одређене колоне коју смо проследили као параметар |
Стринг гетТаблеНаме (инт колона) | Враћа име табеле колоне |
Стринг гетСцхемаНаме (инт колона) | Враћа назив шеме табеле колоне |
инт гетЦолумнЦоунт () | Враћа број колона РесултСет-а |
боолеан исАутоИнцремент (инт колона) | Враћа труе ако је дата колона Ауто Инцремент, иначе фалсе |
Пример резултата РесултСетМетаДата
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) Како доћи до имена базе података која је повезана?
Одговор: Можемо користити методу гетДатабасеПродуцтНаме () објекта ДатабасеМетаДата.
Закључак
У овом упутству смо разговарали о томе шта су интерфејси РесултСет, РесултСетМетаДата и ДатабасеМетаДата и њихове важне методе које се обично користе у ЈДБЦ програмима. Такође смо видели како ажурирати податке у ДБ помоћу РесултСет. РесултСетМетадата садржи информације о РесултСет-у, као што су Име ступца, Број ступаца итд.
ДатабасеМетаДата садржи информације о бази података.
<|. | СЛЕДЕЋА Лекција >>
Препоручено читање
- ЈДБЦ ДриверМанагер, ЈДБЦ ПрепаредСтатемент анд Статемент
- Јава ЈДБЦ лекција: Шта је ЈДБЦ (повезивање Јава базе података)
- Јава ЈДБЦ управљање трансакцијама са примером
- Водич за групну обраду ЈДБЦ-а и ускладиштене процедуре
- Водич за Јава ЈДБЦ повезивање са примером програмирања
- Упоредни и упоредни интерфејси у Јави
- Тестирање базе података селена (помоћу ВебДривер-а и ЈДБЦ АПИ-ја)
- Руковање изузецима ЈДБЦ - Како се рукује СКЛ изузецима