java jdbc transaction management with example
Цей підручник пояснює типи транзакцій JDBC, типи даних, методи управління транзакціями та способи їх використання у програмі Java:
В Набір результатів JDBC підручник з Серія підручників JDBC , ми навчились використовувати JDBC ResultSet для отримання даних.
У цьому підручнику ми обговоримо типи транзакцій у JDBC. Ми бачили короткий вступ до типів транзакцій у наших попередніх підручниках. Тут ми побачимо детально. Ми також розглянемо, які типи даних є у JDBC та як їх використовувати в програмі Java.
База даних матиме різні типи даних, а Java матиме різні типи даних. JDBC буде керувати цією диференціацією. Давайте підготуємось знати важливу тему в JDBC.
Що ви дізнаєтесь:
Управління транзакціями JDBC
Послідовність дій (оператори SQL) трактується як одна одиниця, яка відома як транзакція. Управління транзакціями важливо для орієнтованих на RDBMS додатків для підтримки цілісності та узгодженості даних.
Під час виконання транзакції ми будемо використовувати методи getXXX та setXXX для отримання та встановлення даних в об’єкті ResultSet. XXX представляє типи даних стовпців. У цьому посібнику ми обговоримо транзакції та типи даних JDBC.
Типи транзакцій
У JDBC кожен запит SQL буде розглядатися як транзакція. Коли ми створюємо підключення до бази даних у JDBC, воно буде працювати в режимі автоматичного фіксації (значення автоматичного фіксації - TRUE). Після виконання оператора SQL він буде здійснений автоматично.
Іноді ми можемо захотіти здійснити транзакцію після виконання ще деяких операторів SQL. На той момент нам потрібно встановити значення автофіксації на False. Таким чином, дані не будуть зафіксовані перед виконанням усіх запитів. Якщо ми отримаємо виняток у транзакції, ми можемо відкотити () зміни і зробити так, як раніше. Управління транзакціями можна добре пояснити, використовуючи властивості ACID.
КИСЛОТА означає
- А – Атомність -> Якщо всі запити будуть виконані успішно, дані будуть записані, інакше ні.
- C – Послідовність -> Після будь-якої транзакції БД повинна знаходитись у стабільному стані.
- I– Ізоляція -> Транзакція ізольована від інших операцій.
- D – Міцність -> Якщо транзакція вчиняється один раз, вона залишатиметься завжди вчиненою.
В управлінні транзакціями є три найважливіші функції. Вони є:
Запитання та відповіді на інтерв’ю для sql server 2012
- Здійснити: Після виконання операторів SQL ми хочемо зробити зміни постійними в базі даних. Ми повинні викликати метод commit (). Зазвичай те, що є комітом, означає, що воно буде постійно вносити зміни в базу даних. Ми не можемо скасувати / скасувати зміни. Але ми можемо змінити дані в базі даних.
- Відкат: Відкат скасовує зміни до останнього коміту або згаданої точки збереження. Іноді ми можемо скасувати зміни. Наприклад, у нас є один вкладений запит, одна частина була успішно виконана, а інша створила певний виняток. На той момент ми хочемо скасувати зміни, внесені першою частиною, нам слід викликати метод Rollback (), щоб зробити це, якщо сталося виняток.
- Точка збереження: Savepoint допомагає створити контрольну точку в транзакції і дозволяє здійснити відкат до цієї конкретної точки збереження. Будь-яка точка збереження, яка була створена для транзакції, буде автоматично знищена та стане недійсною після того, як транзакція буде скоєна або відкатана.
До цього часу ми бачили, що таке коміт, відкат та Savepoint та його операції. Нижче ми побачимо його методи та способи використання в програмі.
Методи управління транзакціями
Інтерфейс підключення забезпечує 5 методів управління транзакціями. Вони такі:
# 1) Метод setAutoCommit ()
За замовчуванням значення значення AutoCommit має значення TRUE. Після виконання оператора SQL він буде здійснений автоматично. За допомогою методу setAutoCommit () ми можемо встановити значення AutoCommit.
# 2) Метод коміту ()
Метод коміту використовується для фіксації даних. Після виконання оператора SQL ми можемо викликати commit (). Він здійснить зміни, внесені за допомогою оператора SQL.
Синтаксис: conn.commit ();
# 3) Метод відкату ()
Метод відкату використовується для скасування змін до останнього коміту. Якщо ми стикаємося з будь-якою проблемою або винятком у процесі виконання операторів SQL, ми можемо відмовити транзакцію.
Синтаксис: conn.rollback ();
# 4) Метод setSavepoint ()
Savepoint надає вам додатковий контроль над транзакцією. Коли ви встановлюєте точку збереження в транзакції (група операторів SQL), ви можете використовувати метод rollback (), щоб скасувати всі зміни до точки збереження або після точки збереження (). Метод setSavepoint () використовується для створення нової точки збереження.
# 5) Метод releaseSavepoint ()
Застосовується для видалення створеної точки збереження.
У наведеній нижче програмі ви дізнаєтесь більше про ці методи, а також дізнаєтесь, як використовувати її в програмі Java.
У цьому посібнику всі програми написані на Java. Ми використовували версію Java 8 та Oracle DB.
>> Клацніть тут завантажити програмне забезпечення Oracle.
>> Клацніть тут щоб завантажити версію Java 8.
Він має покроковий процес встановлення Java.
Приклад програми транзакцій
package com.STH.JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Savepoint; import java.sql.Statement; public class Transaction_Management { public static void main(String() args) throws ClassNotFoundException { // TODO Auto-generated method stub //Select Query to get the Data from employee_details table String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002'; Boolean autoCommit; String update_query = 'update employee_details set salary = 41000 where empNum = 2001'; String update_query1 = 'update employee_details set salary = 42000 where empNum = 2002'; //Update query to set the email id for the employee whose empNUM is 1001 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; //Checking whether the SELECT query is executed successfully or not rs1 = statemnt1.executeQuery(QUERY); //Executed the SELECT Query System.out.println('Getting the data from employee_details table'); displayData(rs1); //Set the autoCommit value of the connection to FALSE System.out.println('Setting the AutoCommit value as FALSE'); conn.setAutoCommit(false); autoCommit = conn.getAutoCommit(); System.out.println('AutoCommit value of the Connection = '+ autoCommit); //Creating Statement to execute the update query statemnt1 = conn.createStatement(); System.out.println('Executing Update query to update salary of EMPNUM = 2001'); System.out.println('Update Query is ' + update_query); int return_rows = statemnt1.executeUpdate(update_query); System.out.println('Updated the data but didn't commit'); //Getting data after Updation Connection conn1 = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE'); System.out.println('Opening new connection'); System.out.println('EMPNUM = 2001 data'); Statement statement2 = conn1.createStatement(); ResultSet rs; rs = statement2.executeQuery(QUERY); displayData(rs); System.out.println('Commit has been done'); conn.commit(); Savepoint s1 = conn.setSavepoint(); System.out.println('SavePoint has been created'); System.out.println('Displaying data of EMPNUM = 2001'); System.out.println('Using The Second Connection'); rs = statement2.executeQuery(QUERY); displayData(rs); rs = statemnt1.executeQuery(QUERY); //Rollback the transaction System.out.println('Data of EMPNUM = 2002'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); System.out.println('Updating the salary of EMPNUM = 2002'); System.out.println('Update Query is ' + update_query1); statemnt1.executeUpdate(update_query1); System.out.println('Data of EMPNUM = 2002 but didn't commit'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); System.out.println('Rollback is done... so updated data won't be reflected'); conn.rollback(s1); System.out.println('Data of EMPNUM = 2002 after Rollback till the last savepoint'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); } catch (SQLException e) { e.printStackTrace(); } } public static void displayData(ResultSet rs1) throws SQLException { 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); } } }
Вихід:
Пояснення:
Що ми зробили у вищезазначеній програмі управління транзакціями, так це оновлення значень даного працівника в таблиці EMPLOYEE_DETAILS та фіксація даних. Якщо сталася якась помилка або виняток, ми виконали операцію відкату (). Зараз ми побачимо повне пояснення програми.
# 1) Створено 2 Виберіть запит для 2 працівників на основі їх EMPID
Нижче наведено 2 вибраних запити.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
# два) Створив два запити на оновлення для 2 працівників на основі їх EMPID
Два оновлені запити:
String update_query = 'update employee_details set salary = 41000 where empNum = 2001'; String update_query1 = 'update employee_details set salary = 42000 where empNum = 2002';
# 3) Відкрийте підключення, виконайте запит на вибір та відображте дані EMPNUM = 2001.
# 4) За допомогою методу setAutoCommit () встановіть для значення autoCommit значення false.
# 5) Виконано запит на оновлення EMPNUM = 2001 і створено інше підключення для тієї ж бази даних і вибрано значення EMPNUM = 2001.
# 6) Результатні дані працівника, чий EMPNUM = 2001, не є оновленими даними. Оскільки ми не виконували операцію commit (). Якщо ви використовували те саме підключення, де використовували його для оновлення, воно показало б вам оновлені дані. Тепер фіксуються дані. Дані були відображені в таблиці.
# 7) Створено одну точку збереження після операції коміту.
# 8) Використання запиту вибору для відображення даних EMPNUM = 2002. Змінено заробітну плату цього працівника за допомогою запиту оновлення. Після цього відображаються дані EMPNUM = 2002, використовуючи те саме з'єднання. Він повинен відображати оновлені дані.
# 9) Здійснено відкат до останньої точки збереження, використовуючи метод відкоту. Тепер, коли ми показали дані цього працівника за тим самим підключенням, він має старі дані, оскільки відкат скасовує зміни до останньої точки збереження, якщо ми згадуємо точку збереження ще до останнього коміту.
# 10) Ми створили один метод, який відображатиме дані, оскільки ми відображаємо дані тут багато разів.
Типи даних JDBC
Бази даних мають типи даних SQL, а Java - типи даних Java. Повинен бути механізм зчитування та запису даних між додатком Java та базою даних. Різні бази даних підтримують типи SQL, але з деякими варіаціями назви.
Наприклад, більшість баз даних підтримують великі двійкові значення, Oracle називає їх LONG RAW, Sybase називає IMAGE, Informix - BYTE, а DB2 - LONG VARCHAR FOR BIT DATA.
Під час написання програми JDBC нам не потрібно турбуватися про типи даних SQL, що використовуються цільовою базою даних. JDBC має набір загальних ідентифікаторів типу SQL у класі java.sql.Types. Ці типи призначені для підтримки більшості загальних типів даних SQL. Під час написання програми JDBC ми використовуватимемо лише типи даних JDBC.
Драйвер JDBC буде перетворювати типи даних Java у типи даних бази даних вперед і назад. Ви можете використовувати метод java.sql.DatabaseMetaData.getTypeInfo, щоб перевірити, які типи SQL насправді підтримуються даною базою даних, а потім написати програму. JDBC використовує відображення за замовчуванням для більшості типів даних.
Наприклад, рядок Java буде перетворено у тип SQL VARCHAR.
Ми побачимо, як виконується зіставлення в методах setXXX, getXXX і updateXXX інтерфейсів PrepaSStatment або CallableStatement або ResultSet в наступній таблиці:
ТИП SQL | ТИП JAVA / JDBC | setXXX | getXXX | updateXXX |
---|---|---|---|---|
ЦІЛИЙ | інт | setInt | тоновані | updateInt |
ЧАР | java.lang.String | setString | getString | updateString |
ВАРЧАР | java.lang.String | setString | getString | updateString |
ЛОНГВАРЧАР | java.lang.String | setString | getString | updateString |
БІТ | логічний | setBoolean | getBoolean | updateBoolean |
ЧИСЛОВИЙ | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
СМАЛІНТ | короткий | setShort | getShort | updateShort |
ВЕЛИКИЙ | довгота | setLong | getLong | updateLong |
РЕАЛЬНИЙ | плавати | setFloat | getFloat | updateFloat |
ПЛАВАТИ | плавати | setFloat | getFloat | updateFloat |
ДВОЙНИЙ | подвійний | setDouble | getDouble | updateDouble |
ДВОЙКИ | байт () | setBytes | getBytes | updateBytes |
ДАТА | java.sql.Date | setDate | getDate | updateDate |
ЧАС | java.sql.Time | setTime | getTime | updateTime |
ГРАФІК | java.sql.Timestamp | setTimestamp | getTimestamp | updateTimeStamp |
КЛОБ | java.sql.Clob | setClob | getClob | updateClob |
BLOB | java.sql.Blob | setBlob | getBlob | updateBlob |
Масив | Масив | setArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Структурований тип | Об'єкт | setObject | getObject | updateObject |
У наших попередніх підручниках ми встановили методXXX, getXXX та updateXXX для основних типів даних. Ви можете посилатися на це.
Тут ми пояснили типи clob та blob у наступному прикладі.
Приклад програми BLOB
package com.STH.JDBC; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Blob_Example { @SuppressWarnings('resource') public static void main(String() args) throws ClassNotFoundException, IOException { // TODO Auto-generated method stub String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)'; //Select Query to get the Data from employee_details table //Update query to set the email id for the employee whose empNUM is 1001 Class.forName('oracle.jdbc.driver.OracleDriver'); System.out.println('Establishing Connection'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Executing the Create Query statemnt1.execute(QUERY); System.out.println('Table has been created for BLOB type'); System.out.println('Inserting data into Blob_Sample_Example table'); String insert_query = ' insert into Blob_Sample_Example values(?,?)'; //Passing the values for preparedStatement PreparedStatement pstmnt = conn.prepareStatement(insert_query); pstmnt.setString(1, 'Sotware Testing Help'); //Mention Image path to store the image in DB FileInputStream inputStream = new FileInputStream('D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic.png'); pstmnt.setBlob(2, inputStream); //Executing the preparedStatement to insert the data pstmnt.execute(); System.out.println('Retrieving data'); ResultSet rs = statemnt1.executeQuery('select * from Blob_Sample_Example'); while(rs.next()) { //Getting Picture Name System.out.println('Picture Name:' + rs.getString(1)); Blob blob1 = rs.getBlob(2); //using blob retrieving the Image byte byteArray() = blob1.getBytes(1,(int)blob1.length()); FileOutputStream outPutStream = new FileOutputStream('D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic output.png'); outPutStream.write(byteArray); System.out.println(' Go to the following path: D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic output.png'); } } catch (SQLException e) { e.printStackTrace(); } } }
Вихід:
Файл успішно збережено за вказаним шляхом.
Пояснення:
У наведеній вище програмі ми зробили спочатку ми створили / зберегли одне зображення в папці 'D: \ Bhakiya \ Bhakiya \ JDBC' . Це місце є лише для прикладу. Ви можете створити власний шлях до файлу у своїй системі. Назва файлу - тестування програмного забезпечення pic. Потім ми створили одну програму Java для зберігання цього зображення в таблиці БД, отримання зображення із таблиці та збереження в локальній системі.
До цього часу ми обговорили огляд завдання. Зараз ми побачимо, як ми цього досягли в програмі.
# 1) Створіть одну таблицю в БД для зберігання зображення.
Синтаксис:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
У наведеному вище запиті ми маємо 2 стовпці.
- PicName - varchar2 -> Використовується для зберігання назви зображення
- picture - BLOB -> Використовується для зберігання зображення в таблиці.
Тип даних BLOB використовується для зберігання зображення / зображення в таблиці БД.
# два) Для підключення CREATE Query створено підключення та оператор, які викликаються методом execute.
statemnt1.execute(QUERY);
# 3) Далі ми створили запит на вставку та виконали його за допомогою PreparedStatement.
Синтаксис PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Використовуючи setString () - встановіть назву зображення.
# 5) Щоб встановити зображення, використовуйте клас FileInputStream, щоб передати місце розташування зображення.
Синтаксис:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Потім, використовуючи метод setBlob (), ми можемо встановити зображення в об'єкті PreparedStatement. Після цього викликається метод execute PreparedStatement. Це додасть дані до таблиці.
Після виконання запиту на вставку за допомогою об’єкта ResultSet ми отримуємо дані з таблиці (за допомогою вибору запиту).
# 6) За допомогою методу getString ми можемо отримати значення стовпця PicName.
# 7) Щоб отримати Зображення, виконайте наведені нижче дії:
- Створіть Blob-об'єкт і призначте повернені значення методу getBlob об'єкта ResultSet.
- Синтаксис для цього: Blob blob1 = rs.getBlob ();
- Створіть об'єкт масиву байтів і отримайте значення об'єкта Blob як байти.
- Створіть об'єкт FileOutputStream і передайте повний шлях для збереження зображення в цьому шляху. Викличте метод write () об'єкта FileOutputStream - який буде зберігати зображення.
- Після цього програма була успішно виконана.
# 8) Перейдіть до місця вихідного зображення та перевірте, чи однакові вхід і вихід.
Приклад програми CLOB
package com.STH.JDBC; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.sql.Blob; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Clob_Example { public static void main(String() args) throws ClassNotFoundException, IOException { // TODO Auto-generated method stub String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)'; //Create Query to create new table for CLOB example Class.forName('oracle.jdbc.driver.OracleDriver'); //Creating Connection System.out.println('Establishing Connection'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Executing create query statemnt1.execute(QUERY); System.out.println('Table has been created for CLOB type'); System.out.println('Inserting data into Clob_Sample_Example table'); //Insert Query String insert_query = ' insert into Clob_Sample_Example values(?,?)'; //Passing Parameters for PreparedStatement PreparedStatement pstmnt = conn.prepareStatement(insert_query); pstmnt.setString(1, 'File1'); FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt'); pstmnt.setClob(2, fileRead); //Executing the PreparedStatement pstmnt.execute(); System.out.println('Retrieving data'); ResultSet rs = statemnt1.executeQuery('select * from Clob_Sample_Example'); while(rs.next()) { System.out.println('File Name:' + rs.getString(1)); //Getting file data Clob clob1 = rs.getClob(2); Reader r = clob1.getCharacterStream(); //Using Reader - read the data and Writer - Write the data in file in the given location FileWriter fileWrite = new FileWriter('D:\Bhakiya\Bhakiya\JDBC\file1 output.txt'); int i; while((i=r.read())!=-1) fileWrite.write(i); fileWrite.close(); System.out.println(' Go to the following path: D:\Bhakiya\Bhakiya\JDBC\file1 output.txt'); } } catch (SQLException e) { e.printStackTrace(); } } }
Вихід:
Вхідний файл:
Файл успішно збережено за вказаним шляхом.
Вихідний файл:
Пояснення:
У наведеній вище програмі ми спочатку створили / зберегли один текстовий файл “file1.txt” у папці “D: \ Bhakiya \ Bhakiya \ JDBC”. Це місце є лише для прикладу. Ви можете створити власний шлях до файлу у своїй системі. Потім ми створили одну програму Java для зберігання цього файлу в таблиці БД і отримання цього файлу з таблиці та збереження його в локальній системі.
До цього часу ми обговорили огляд завдання. Зараз ми побачимо, як ми цього досягли в програмі.
# 1) Створіть одну таблицю в БД для зберігання зображення.
Нижче наведено синтаксис запиту CREATE TABLE:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
У наведеному вище запиті ми маємо 2 стовпці.
- FileName - varchar2 -> Використовується для зберігання імені зображення.
- StoreFile - CLOB -> Використовується для зберігання файлу в таблиці.
Тип даних CLOB використовується для зберігання типу символів двійкових даних у таблиці DB
# два) Для підключення CREATE Query створено підключення та оператор, які викликаються методом execute.
statemnt1.execute(QUERY);
# 3) Далі ми створили запит на вставку та виконали його за допомогою PreparedStatement.
Синтаксис PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) За допомогою setString () - встановіть ім'я FileName.
# 5) Щоб встановити / зберегти файл, використовуйте клас FileReader, щоб передати файл із місцем заповнення.
Синтаксис:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Потім, використовуючи метод setClob (), ми можемо встановити файл в об'єкті PreparedStatement. Після цього викликається метод execute PreparedStatement. Це додасть дані до таблиці.
Після виконання запиту на вставку за допомогою об’єкта ResultSet ми отримуємо дані з таблиці (за допомогою запиту вибору).
Виберіть запит:
'select * from Clob_Sample_Example'
# 6) За допомогою методу getString ми можемо отримати значення стовпця FileName.
# 7) Щоб отримати файл, ми виконали наступні кроки:
- Створіть об'єкт Clob і призначте повернені значення методу getClob об'єкта ResultSet.
- Синтаксис для цього: Clob clob1 = rs.getClob ();
- Створіть об'єкт Reader і отримайте значення об'єкта Clob як символ.
- Створіть об'єкт FileWriter і передайте повний шлях для зберігання Файлу в цьому шляху. Виклик методу write () об'єкта FileWrite - це буде запис даних у файл у розташуванні.
- Після цього програма була успішно виконана.
# 8) Перейдіть до розташування вихідного файлу та перевірте, чи однакові вхідні та вихідні файли.
Варто пам’ятати:
- ACID Properties пояснює управління транзакціями в базі даних.
- Фіксація (), відкат () та точка збереження - найважливіші операції в управлінні транзакціями.
- Фіксація внесе зміни назавжди в БД, відкат скасує зміни до останнього коміту або згаданої точки збереження, а Savepoint допомагає створити контрольну точку.
- База даних підтримує типи даних SQL, а Java - типи даних Java. Для обробки цього перетворення використовується драйвер JDBC.
- Сам драйвер JDBC має певний тип ідентифікаторів SQL, тому програмісту не потрібно турбуватися про типи даних.
Часті запитання
Q # 1) Що таке тип даних JDBC?
Відповідь: Java має свої типи даних, а база даних має свої типи даних. Драйвер JDBC перетворює тип даних Java на відповідний тип даних SQL, який буде прийнятий базою даних. Об'єкти ResultSet також надають методи setXXX () та getXXX (), доступні для відповідних типів даних.
Q # 2) Який тип даних для дати в Java?
Відповідь: Дата в Java - це не тільки тип даних, а й клас. Дата в Java містить дату, час, рік, назву дня, день тижня та часовий пояс. Клас дати має відповідні методи отримання відповідних даних.
Q # 3) Яка різниця між java.util.Date та java.sql.Date?
Відповідь: Основна відмінність - java.util.Date також має інформацію про дату та час. Але java.sql.Date має інформацію лише про дату. Це основна різниця, яку ми не можемо зіставити java.util.Date безпосередньо з java.sql.Date.
Q # 4) Чи є у нас клас на Java, який представляє тип TIME і TIMESTAMP для SQL?
Відповідь: Так, у нас є клас для TIME та TIMESTAMP для SQL. Клас java.sql.Time представляє інформацію, пов'язану з ЧАСОМ. Клас java.sql.timestamp представляє інформацію, пов’язану з TIMESTAMP.
Q # 5) Як розпочати транзакцію в JDBC?
Відповідь: Підключення JDBC починається з увімкненим режимом автофіксації, де кожен оператор SQL розглядається як транзакція. Немає конкретного процесу для початку транзакції в JDBC. Коли ви створюєте підключення та починаєте виконувати оператор SQL, саме з цього місця транзакція розпочалася.
Q # 6) Що таке метод commit () у Java?
Відповідь: Метод commit () у Java використовується для збереження змін, внесених після останнього коміту (). Метод commit () доступний в інтерфейсі Connection. Використовуючи об’єкт підключення, ми можемо викликати commit ().
Q # 7) Що таке метод відкату в Java?
Відповідь: Після останнього коміту (), якщо виникли якісь проблеми, ми можемо викликати метод rollback (), щоб повернути всі внесені зміни до останнього методу commit.rollback (), доступного в інтерфейсі Connection. Використовуючи об’єкт підключення, ми можемо викликати метод rollback ().
Висновок
Тут ми розглянули типи даних у Java та DB, а також про те, як з цим справляється драйвер JDBC. Ми обговорили властивості кислоти. Це найважливіше для банківської сфери. Це буде дуже корисно для вашої кар’єри. У розділі Управління транзакціями ми обговорили такі способи комітів і відкотів, як коміт (), відкат (), setAutoCommit (), setSavepoint () та releaseSavepoint ().
Рекомендована література
- Підручник з Java JDBC: Що таке JDBC (підключення до бази даних Java)
- Підручник з підключення Java JDBC з прикладом програмування
- JDBC DriverManager, JDBC PreparedStatement and Statement
- JDBC ResultSet: Як використовувати Java ResultSet для отримання даних
- Java-типи даних, цикли, масиви, комутатори та твердження
- Довжина рядка Java () Метод із прикладами
- Як використовувати метод Java toString?
- Тестування бази даних селену (за допомогою WebDriver та JDBC API)