JDBC - Как проверить есть ли в БД (MySQL) введённое пользователем слово?

На данном этапе было установлено соединение с БД MySQL

Далее пользователь вводит слово и мы должны проерить есть ли данное слово в БД (структуру таблицы прикреплю)

Название бд: mybase

Таблица: new_table

Данные для входа:

user - root
password - 1234

Колонки таблицы: int id, String word, int tonality

СУТЬ: Еcли ввёденное пользователем слово есть в таблице в колонке word, нужно вывести его и соответствующее ему число tonality

Прикрепляю код подключения к БД

import java.sql.*;

public class Main {
    private static final String URL = "jdbc:mysql://localhost:3306/mybase";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "1234";
    private static Object ResultSet;


    public static void main(String[] args) {

        Connection connection;
        try {
            Driver driver = new com.mysql.cj.jdbc.Driver();
            DriverManager.registerDriver(driver);

            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            if (!connection.isClosed()) {
                System.out.println("Соединение с БД установлено");
            }
            connection.close();
        } catch (SQLException e) {
            System.out.println("Соединение с БД не установлено");
        }
        Connection myConn=null;
        PreparedStatement myStmt = null;
        Object myRs = null;
        ResultSet = myRs;
        try{
            myConn = DriverManager.getConnection("dbc:mysql://localhost:3306/mybase");
            myStmt = myConn.prepareStatement("select * from new_table where id=1");
        }

}

введите сюда описание изображения

введите сюда описание изображения


Ответы (1 шт):

Автор решения: OlegFrolOff

Попробуйте так:

        public static void main(String[] args) {
                    Driver driver = new com.mysql.cj.jdbc.Driver();
                    DriverManager.registerDriver(driver);

                try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                     PreparedStatement myStmt = myConn.prepareStatement("select * from new_table where id=?")){

                   myStmt.setInt(1, 1);
                   try (ResultSet resultSet = preparedStatement.executeQuery()){
                   //в этом блоке можно обрабатывать resultSet так, как Вам нужно
                   }
                }catch (SQLException ex) {
                  Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
                }
        }

Не гарантирую, что сразу сработает - сложновато по памяти в блокноте писать) И для получения соединения я бы написал отдельный класс, который и создаёт connection, и проверяет, открыто ли соединение, перед тем как вернуть объект. Но это уже детали. Обращаю внимание на запрос: "select * from new_table where id=?" и подстановку значения: myStmt.setInt(1, 1);

первая единица означает порядковый номер параметра в запросе, куда нужно подставить значение, вторая - в данном случае это само подставляемое значение, но его можно получать из переменной или какого-либо метода.

→ Ссылка