Junior
Фарқи байни усулҳои execute, executeQuery ва executeUpdate чист?
sobes.tech AI
Ҷавоб аз AI
Методҳои execute, executeQuery ва executeUpdate барои иҷрои дархостҳои SQL тавассути JDBC истифода мешаванд, аммо барои намудҳои гуногуни дархостҳо пешбинӣ шудаанд ва натиҷаҳои гуногун меоранд.
-
executeQuery(String sql):- Барои иҷрои дархостҳои SQL аз навъи
SELECTпешбинӣ шудааст. - Объекти
ResultSet-ро бармегардонад, ки натиҷаҳои дархостро дар бар мегирад. - Иҷрои истиснои
SQLExceptionмекунад, агар дархостSELECTнабошад.
// Намунаи истифодаи executeQuery String sql = "SELECT COUNT(*) FROM users"; try (ResultSet rs = statement.executeQuery(sql)) { if (rs.next()) { int userCount = rs.getInt(1); System.out.println("Шумораи корбарон: " + userCount); } } catch (SQLException e) { e.printStackTrace(); } - Барои иҷрои дархостҳои SQL аз навъи
-
executeUpdate(String sql):- Барои иҷрои дархостҳои SQL аз навъи
INSERT,UPDATEёDELETEпешбинӣ шудааст. - Ҳамчунин барои иҷрои фармонҳои DDL (масалан,
CREATE TABLE,ALTER TABLE) истифода мешавад. - Ба қайд гирифта мешавад, ки натиҷа як рақами бутун (
int) мебошад, ки шумораи сатрҳои таъсиррасонро ё 0-ро нишон медиҳад. - Иҷрои истиснои
SQLExceptionмекунад, агар дархостResultSetбаргардонад.
// Намунаи истифодаи executeUpdate String sql = "UPDATE products SET price = price * 1.1 WHERE category = 'electronics'"; try { int updatedRows = statement.executeUpdate(sql); System.out.println("Рақамҳои навсозишударо: " + updatedRows); } catch (SQLException e) { e.printStackTrace(); } - Барои иҷрои дархостҳои SQL аз навъи
-
execute(String sql):- Методи умумӣ барои иҷрои ҳар гуна навъи дархост.
booleanбаргардон мекунад:trueагар натиҷаResultSetбошад (бароиSELECT), ваfalseагар натиҷа шумораи сатрҳои таъсиррасон ё чизе набошад (бароиINSERT,UPDATE,DELETE, DDL).- Барои гирифтани натиҷаи воқеӣ пас аз
execute:- Агар
executetrueбаргардонд, истифода баредgetResultSet()барои гирифтаниResultSet. - Агар
executefalseбаргардонд, истифода баредgetUpdateCount()барои гирифтани шумораи сатрҳои таъсиррасон.
- Агар
// Намунаи истифодаи execute String sql = "CREATE TABLE IF NOT EXISTS logs (id INT PRIMARY KEY, message VARCHAR(255))"; try { boolean isResultSet = statement.execute(sql); if (isResultSet) { // Ин дархости `SELECT` аст try (ResultSet rs = statement.getResultSet()) { // Коркарди натиҷаҳо } } else { // Ин дархости `INSERT`, `UPDATE`, `DELETE` ё DDL аст int updateCount = statement.getUpdateCount(); System.out.println("Шумораи сатрҳои таъсиррасон ё натиҷаи DDL: " + updateCount); } } catch (SQLException e) { e.printStackTrace(); }
Дар зер ҷадвал нишон медиҳад фарқиятҳои асосӣ:
| Метод | Навъи SQL дархост | Натиҷаи баргардондашуда | Мисолҳои дархостҳо |
|---|---|---|---|
executeQuery |
SELECT |
ResultSet |
SELECT * FROM users |
executeUpdate |
INSERT, UPDATE, DELETE, DDL |
int (шумораи сатрҳои таъсиррасон ё 0) |
INSERT INTO, UPDATE users, DROP TABLE |
execute |
Ҳар гуна | boolean (true, агар ResultSet; false, агар не) |
Ҳар гуна |
Тавсия дода мешавад, ки дар ҳолатҳои, ки навъи дархост пешакӣ маълум аст, истифодаи методҳои махсус (executeQuery, executeUpdate) беҳтар аст, зеро ин равшанӣ ва назорати бештарро таъмин мекунад. Метод execute дар ҳолатҳои, ки навъи дархост динамикӣ ё пешакӣ маълум нест, истифода мешавад.