Выполнение операций с базой данных на Java | SQL CREATE, INSERT, UPDATE, DELETE и SELECT

Опубликовано: 30 Ноября, 2021

Эта статья поможет вам узнать, как выполнять базовые операции с базой данных с помощью 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 и предоставление необходимых разрешений:

  1. Откройте оракул с помощью cmd. Для этого введите sqlplus в cmd и нажмите Enter.
  2. Создайте идентификатор пользователя, защищенный паролем. Этот идентификатор пользователя называется дочерним пользователем.
     создать пользователя, идентифицированного;
  3. Предоставьте дочернему пользователю необходимые разрешения. Для простоты мы предоставляем дочернему пользователю права администратора базы данных.
     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 . Их обычно используемые методы:
    1. логическое выполнение (String sql): выполняет общий оператор SQL. Он возвращает true, если запрос возвращает ResultSet , и false, если запрос возвращает счетчик обновлений или ничего не возвращает. Этот метод может быть использован только с Заявлением.
    2. int executeUpdate (String sql): выполняет инструкцию INSERT, UPDATE или DELETE и возвращает учетную запись обновления, указывающую количество затронутых строк (например, 1 вставленная строка, или 2 обновленные строки, или 0 затронутых строк).
       Заявление stmt = con.createStatement ();
            Строка q1 = "вставить в значения идентификатора пользователя
            ('"+ id +"', '"+ pwd +"', '"+ fullname +"', '"+ email +"') ";
            интервал x = stmt.executeUpdate (q1);
      
    3. 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 и многому другому, см. Полный курс подготовки к собеседованию .