Проблема настройки подключения MySql из Java - PullRequest
1 голос
/ 03 октября 2019

В Netbeans 11.1 я пытаюсь подключить свой код Java Maven к базе данных MySql, но каждый раз, когда я пытаюсь установить соединение на основе Интернет-учебников, я получаю ошибки. У меня есть mysql-connector-java-8.0.17.jar в папке зависимостей. Я новичок в Java, и у моих старших товарищей по команде проекта также возникают проблемы с выяснением соединения.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class NewJFrame extends javax.swing.JFrame {

//connect to DB
    private final String ConnectionString = "jdbc:mysql://54.235.42.66:3306/CIS470db";
    private final String UserName = "team6";
    private final String Password = "CIS470team6";
   //next line has error
 private final DBConnect dbConnect;
    //next line has error
    dbConnect = new DBConnect(ConnectionString, UserName, Password);

первая ошибка: не удается найти символ символа: класс DBConnect

расположение: класс NewJFrame

Вторая ошибка: ожидается

не удается найти символ символа: класс DBConnect

расположение: класс NewJFrame

1 Ответ

0 голосов
/ 03 октября 2019

Вы не импортировали DBConnect в своем классе, поэтому компилятор не знает, где найти DBConnect или что это такое.

Вам также нужно сделать это, иначе это приведет кa SQLException:

try {
    dbConnect = new DBConnect(ConnectionString, UserName, Password);
} catch (SQLException e) {
    e.printStackTrace();
}

Также попробуйте реализовать Singleton Pattern при соединении с базой данных. Это действительно удобно для отслеживания.

Вот как я это сделал в одном из моих старых проектов:

DatabaseConnection.java

package com.stackoverflow.utility;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.stackoverflow.constant.Credentials;

public class DatabaseConnection implements Credentials {
    private static DatabaseConnection database;
    Connection connection;

    public static DatabaseConnection getDatabase() {
        if (database == null) {
            database = new DatabaseConnection();
        }

        return database;
    }

    public Connection getConnection() throws ClassNotFoundException, SQLException {
        if (connection == null || connection.isClosed()) {
            Class.forName(JDBC_DRIVER);
            connection = DriverManager.getConnection(DB_URL, USER, PWD);
        }

        return connection;
    }
}

CloseConnection.java

package com.stackoverflow.utility;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class CloseConnection {
    public static void close(ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(PreparedStatement preparedStatement) {
        if (preparedStatement != null) {
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(Connection connection) {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(PreparedStatement preparedStatement, ResultSet resultSet) {
        close(resultSet);
        close(preparedStatement);
    }
}

Credentials.java

package com.stackoverflow.constant;

public interface Credentials {
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // Database driver
    static final String DB_URL = "jdbc:mysql://116.72.10.78:3352/MohitDB"; // Database url

    // Database credentials
    static final String USER = "user";
    static final String PWD = "password";
}

Queries.java

package com.stackoverflow.constant;

public interface Queries {
    public static final String AUTHENTICATION_QUERY = "SELECT * FROM TableUser WHERE username = ? AND password = ?";
}

Метод аутентификации

public boolean getAuthentication(Login login) {
    try {
        PreparedStatement preparedStatement = DatabaseConnection.getDatabase().getConnection()
                .prepareStatement(AUTHENTICATION_QUERY);
        preparedStatement.setString(1, login.getUsername());
        preparedStatement.setString(2, login.getPassword());

        ResultSet resultSet = preparedStatement.executeQuery();

        if (resultSet.next()) {
            close(preparedStatement, resultSet);

            return true;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...