Выполнение операций с базой данных на Java | SQL CREATE, INSERT, UPDATE, DELETE и SELECT
Эта статья поможет вам узнать, как выполнять базовые операции с базой данных с помощью JDBC (Java Database Connectivity) API. Эти основные операции - это операторы INSERT, SELECT, UPDATE и DELETE на языке SQL. Хотя целевой системой баз данных является Oracle Database, но те же методы можно применять и к другим системам баз данных, поскольку используемый синтаксис запроса - стандартный SQL, как правило, поддерживается всеми системами реляционных баз данных.
Предпосылки:
- JDK
- Oracle Database (загрузить Oracle Database Express Edition 11g, выпуск 2)
- Драйвер JDBC для Oracle Database (Загрузите драйверы JDBC Oracle Database 11g, выпуск 2). Вам необходимо добавить ojdbc6.jar в библиотеку проекта.
Вам необходимо прочитать эту статью, прежде чем продолжить для лучшего понимания.
Создание пользователя в Oracle Database и предоставление необходимых разрешений:
- Откройте оракул с помощью cmd. Для этого введите
sqlplus
в cmd и нажмите Enter. - Создайте идентификатор пользователя, защищенный паролем. Этот идентификатор пользователя называется дочерним пользователем.
создать пользователя, идентифицированного;
- Предоставьте дочернему пользователю необходимые разрешения. Для простоты мы предоставляем дочернему пользователю права администратора базы данных.
conn / as sysdba; предоставить dba;
Создайте образец таблицы с пустыми полями:
СОЗДАТЬ ТАБЛИЦУ идентификатор пользователя ( id varchar2 (30) NOT NULL PRIMARY KEY, pwd varchar2 (30) НЕ NULL, полное имя varchar2 (50), электронная почта varchar2 (50) );
Основные интерфейсы и классы JDBC
Давайте кратко рассмотрим основные интерфейсы и классы JDBC, которые мы будем использовать в этой статье. Все они доступны в пакете java.sql:
- Class.forName (): здесь мы загружаем файл класса драйвера в память во время выполнения. Нет необходимости использовать новый или создавать объект.
Class.forName ("oracle.jdbc.driver.OracleDriver");
- DriverManager: этот класс используется для регистрации драйвера для конкретного типа базы данных (например, Oracle Database в этом руководстве) и для установления соединения базы данных с сервером через его метод getConnection ().
- Соединение: этот интерфейс представляет собой установленное соединение (сеанс) с базой данных, из которого мы можем создавать операторы для выполнения запросов и получения результатов, получения метаданных о базе данных, закрытия соединения и т. Д.
Con соединения = DriverManager.getConnection ("jdbc: oracle: thin: @localhost: 1521: orcl", "login1", "pwd1");
- Заявление и PreparedStatement : эти интерфейсы используются для выполнения статического SQL-запроса и параметризованного SQL-запроса соответственно. Заявление - это супер-интерфейс интерфейса PreparedStatement . Их обычно используемые методы:
- логическое выполнение (String sql): выполняет общий оператор SQL. Он возвращает true, если запрос возвращает ResultSet , и false, если запрос возвращает счетчик обновлений или ничего не возвращает. Этот метод может быть использован только с Заявлением.
- int executeUpdate (String sql): выполняет инструкцию INSERT, UPDATE или DELETE и возвращает учетную запись обновления, указывающую количество затронутых строк (например, 1 вставленная строка, или 2 обновленные строки, или 0 затронутых строк).
Заявление stmt = con.createStatement (); Строка q1 = "вставить в значения идентификатора пользователя ('"+ id +"', '"+ pwd +"', '"+ fullname +"', '"+ email +"') "; интервал x = stmt.executeUpdate (q1);
- ResultSet executeQuery (String sql): выполняет инструкцию SELECT и возвращает объект ResultSet, который содержит результаты, возвращенные запросом.
Заявление stmt = con.createStatement (); Строка q1 = "выберите * из идентификатора пользователя WHERE id = '" + id + "' И pwd = '"+ pwd +"' "; ResultSet rs = stmt.executeQuery (q1);
- ResultSet: содержит данные таблицы, возвращаемые запросом SELECT. Используйте этот объект для перебора строк в наборе результатов с помощью метода next ().
- SQLException: это проверенное исключение объявлено как вызываемое всеми вышеперечисленными методами, поэтому мы должны явно перехватить это исключение при вызове методов вышеуказанных классов.
Подключение к базе данных
Сервер Oracle Database прослушивает порт 1521 по умолчанию на локальном хосте . Следующий фрагмент кода подключается к идентификатору имени базы данных с помощью имени пользователя login1 и пароля pwd1 .
// Java program to illustrate // Connecting to the Database import java.sql.*; public class connect { public static void main(String args[]) { try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); // Establishing Connection Connection con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:orcl" , "login1" , "pwd1" ); if (con != null ) System.out.println( "Connected" ); else System.out.println( "Not Connected" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Выход : Связанный
Примечание. Здесь Oracle в URL-адресе базы данных в методе getConnection () указывает SID базы данных Oracle. Для базы данных Oracle 11g это orcl, а для базы данных Oracle 10g - xe .
Реализация инструкции Insert
// Java program to illustrate // inserting to the Database import java.sql.*; public class insert1 { public static void main(String args[]) { String id = "id1" ; String pwd = "pwd1" ; String fullname = "geeks for geeks" ; String email = "geeks@geeks.org" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // Inserting data in database String q1 = "insert into userid values('" +id+ "', '" +pwd+ "', '" +fullname+ "', '" +email+ "')" ; int x = stmt.executeUpdate(q1); if (x > 0 ) System.out.println( "Successfully Inserted" ); else System.out.println( "Insert Failed" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Выход : Успешно зарегистрирован
Реализация инструкции обновления
// Java program to illustrate // updating the Database import java.sql.*; public class update1 { public static void main(String args[]) { String id = "id1" ; String pwd = "pwd1" ; String newPwd = "newpwd" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // Updating database String q1 = "UPDATE userid set pwd = '" + newPwd + "' WHERE id = '" +id+ "' AND pwd = '" + pwd + "'" ; int x = stmt.executeUpdate(q1); if (x > 0 ) System.out.println( "Password Successfully Updated" ); else System.out.println( "ERROR OCCURED :(" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Выход : Пароль успешно обновлен
Реализация оператора удаления
// Java program to illustrate // deleting from Database import java.sql.*; public class delete { public static void main(String args[]) { String id = "id2" ; String pwd = "pwd2" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // Deleting from database String q1 = "DELETE from userid WHERE id = '" + id + "' AND pwd = '" + pwd + "'" ; int x = stmt.executeUpdate(q1); if (x > 0 ) System.out.println( "One User Successfully Deleted" ); else System.out.println( "ERROR OCCURED :(" ); con.close(); } catch (Exception e) { System.out.println(e); } } } |
Выход : Один пользователь успешно удален
Реализация оператора Select
// Java program to illustrate // selecting from Database import java.sql.*; select public class { public static void main(String args[]) { String id = "id1" ; String pwd = "pwd1" ; try { Class.forName( "oracle.jdbc.driver.OracleDriver" ); Connection con = DriverManager.getConnection(" jdbc:oracle:thin: @localhost : 1521 :orcl ", " login1 ", " pwd1"); Statement stmt = con.createStatement(); // SELECT query String q1 = "select * from userid WHERE id = '" + id + "' AND pwd = '" + pwd + "'" ; ResultSet rs = stmt.executeQuery(q1); if (rs.next()) { System.out.println( "User-Id : " + rs.getString( 1 )); System.out.println( "Full Name :" + rs.getString( 3 )); System.out.println( "E-mail :" + rs.getString( 4 )); } else { System.out.println( "No such user id is already registered" ); } con.close(); } catch (Exception e) { System.out.println(e); } } } |
Выход : Идентификатор пользователя: id1 Полное название: гики для гиков Эл. Почта: geeks@geeks.org
Примечание. Здесь индекс столбца отсчитывается от 1, первый столбец будет иметь индекс 1, второй - индекс 2 и так далее.
Для других типов данных ResultSet предоставляет соответствующие методы получения:
- getString ()
- getInt ()
- getFloat ()
- getDate ()
- getTimestamp ()
- … ..
Эта статья предоставлена Сангитом Анандом. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .