Programing

Java를 MySQL 데이터베이스에 연결

c10106 2022. 4. 21. 19:11
반응형

Java를 MySQL 데이터베이스에 연결

Java의 MySQL 데이터베이스에 연결하는 방법

노력하면 얻는 것이 있다.

java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)

아니면

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

아니면

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

MySQL 및 JDBC 설치 방법과 사용 방법에 대한 단계별 설명:

  1. MySQL 서버를 다운로드하여 설치하십시오.그냥 평소대로 해.포트 번호를 변경할 때마다 포트 번호를 기억하십시오.디폴트 입니다.3306.

  2. JDBC 드라이버를 다운로드하고 클래스 경로를 입력한 후 ZIP 파일을 추출하고 포함된 JAR 파일을 클래스 경로에 넣으십시오.벤더별 JDBC 드라이버는 JDBC API(여기 튜토리얼)의 구체적인 구현이다.

    Eclipse 또는 Netbeans와 같은 IDE를 사용하는 경우 프로젝트 속성의 빌드 경로에 JAR 파일을 라이브러리로 추가하여 클래스 경로에 추가하십시오.

    명령 콘솔에서 "플레인 바닐라"를 수행하는 경우, 다음에서 JAR 파일의 경로를 지정해야 함-cp, 또는-classpathJava 응용 프로그램 실행 시 인수를 참조하십시오.

    java -cp .;/path/to/mysql-desql.jar com.dll.유클래스

    .현재 디렉터리를 클래스 경로에 추가하기만 하면 찾을 수 있음com.example.YourClass그리고;Windows에 있는 것과 같은 클래스 경로 구분자 입니다.Unix 및 클론에서:사용되어야 한다.

  3. MySQL에서 데이터베이스를 생성하십시오.데이터베이스를 만들자javabase세계 지배를 원하시니까 UTF-8도 같이 쓰시죠.

    CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
  4. Java에 대한 사용자생성하고 액세스 권한을 부여하십시오.단지 사용때문에root나쁜 관행이다.

    CREATE USER 'java'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';
    

    java사용자 이름 및password여기 암호야

  5. JDBC URL확인하십시오. Java를 사용하여 MySQL 데이터베이스를 연결하려면 다음 구문에 JDBC URL이 있어야 한다.

    jdbc:mysql://dvsql:port/properties
    • hostname: MySQL 서버가 설치된 호스트 이름.Java 코드를 실행하는 동일한 시스템에 설치된 경우localhost그것은 또한 다음과 같은 IP 주소가 될 수 있다.127.0.0.1. 연결 문제 및 사용 중 발생하는 경우127.0.0.1대신에localhost해결된 후 네트워크/DNS/호스트 구성에 문제가 있는 경우

    • port: MySQL 서버가 수신 대기하는 TCP/IP 포트.이것은 기본적으로.3306.

    • databasename: 연결할 데이터베이스의 이름.그건.javabase.

    따라서 최종 URL은 다음과 같아야 한다.

    jdbc:mysql://localhost:snmp6/messagabase
  6. Java를 사용하여 MySQL에 대한 연결을 테스트하십시오.다음을 사용하여 단순 Java 클래스 만들기main()연결 테스트 방법.

    String url = "jdbc:mysql://localhost:3306/javabase";
    String username = "java";
    String password = "password";
    
    System.out.println("Connecting database...");
    
    try (Connection connection = DriverManager.getConnection(url, username, password)) {
        System.out.println("Database connected!");
    } catch (SQLException e) {
        throw new IllegalStateException("Cannot connect the database!", e);
    }
    

    만약 당신이 a를 받는다면.SQLException: No suitable driver즉, JDBC 드라이버가 자동 로딩되지 않았거나 JDBC URL이 잘못되었다는 것을 의미한다(즉, 로딩된 드라이버 중 어느 것도 인식하지 못함).일반적으로 JDBC 4.0 드라이버는 런타임 클래스 경로에 놓기만 하면 자동으로 로딩되어야 한다.하나와 다른 하나를 제외하려면 항상 다음과 같이 수동으로 로드하십시오.

    System.out.println("Loading driver...");
    
    try {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Driver loaded!");
    } catch (ClassNotFoundException e) {
        throw new IllegalStateException("Cannot find the driver in the classpath!", e);
    }
    

    :newInstance()여기선 전화할 필요가 없어그냥 낡은 것과 마차를 고치기 위한 것이다.org.gjt.mm.mysql.Driver. 여기서 설명하시오.이 선이 던져진다면ClassNotFoundException그러면 JDBC 드라이버 클래스가 들어 있는 JAR 파일이 클래스 경로에 배치되지 않는다.

    연결하기 매번 드라이버를 로드할 필요는 없다는 점에 유의하십시오.응용 프로그램 시작 시 단 한 번이면 충분하다.

    만약 당신이 a를 받는다면.SQLException: Connection refused, 또는Connection timed out 또는 MySQL 관련입니다.CommunicationsException: Communications link failure그것은 DB에 전혀 접근할 수 없다는 것을 의미한다.여기에는 다음 원인 중 하나 이상이 포함될 수 있다.

    1. JDBC URL의 IP 주소 또는 호스트 이름이 잘못됨.
    2. JDBC URL의 호스트 이름이 로컬 DNS 서버에서 인식되지 않음.
    3. JDBC URL에 포트 번호가 없거나 잘못됨.
    4. DB 서버가 다운됨.
    5. DB 서버는 TCP/IP 연결을 허용하지 않는다.
    6. DB 서버의 연결이 부족함.
    7. Java와 DB 사이에 있는 무언가가 방화벽이나 프록시처럼 연결을 차단하고 있다.

    하나 또는 다른 하나를 해결하려면 다음 조언을 따르십시오.

    1. 다음을 통해 검증 및 테스트ping.
    2. 대신 DNS를 새로 고치거나 JDBC URL의 IP 주소를 사용하십시오.
    3. 다음에 기반하여 확인my.cnfMySQL DB.
    4. DB를 시작하십시오.
    5. 가 없는 하십시오(").--skip-networking option.
    6. 하고, 재시하고 연도 도도 수도 수도 수도 수도 수도 수도 수도 수도 수도 수도 수의 을 닫도록 한다.finally.
    7. 방화벽을 사용하지 않도록 설정하거나 포트를 허용/전송하도록 방화벽/프록시를 구성하십시오.

    :Connection매우 중요하다.연결을 닫지 않고 짧은 시간 내에 많은 연결을 계속 가져오면 데이터베이스 연결이 부족하여 응용 프로그램이 중단될 수 있다.항상 다음 정보를 얻음Connection성명서로또는 아직 Java 7에 있지 않은 경우 다음 위치에서 명시적으로 닫으십시오.finallytry-finally. 닫다finally예외적인 경우에도 닫히도록 하기 위함입니다.이것은 또한 에 적용된다.StatementPreparedStatement그리고ResultSet.

그것은 연결성에 관한 문제였다.기본 DAO 클래스의 도움을 받아 데이터베이스에 완전한 가치가 있는 Java 모델 객체를 로드하고 저장하는 방법에 대한 고급 자습서를 여기에서 찾을 수 있다.


DB 연결에 Singleton Pattern을 사용하는 것은 좋지 않은 접근 방식이다.http://stackoverflow.com/q/9428573/을 참조하십시오.이것은 1위 선발진의 실수다.

DriverManager꽤 오래된 방법이지더 좋은 방법은 a를 얻는 것이다.DataSource앱 서버 컨테이너가 이미 구성되어 있는 항목을 찾아 보십시오.

Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myDB");

또는 데이터베이스 드라이버에서 직접 인스턴스화 및 구성:

MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("scott");
dataSource.setPassword("tiger");
dataSource.setServerName("myDBHost.example.org");

그런 다음 위와 같은 연결을 얻는다.

Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ID FROM USERS");
...
rs.close();
stmt.close();
conn.close();

데이터베이스 상수 초기화

상수 속성 데이터베이스 사용자 이름, 암호, URL 및 드라이버, 폴링 제한 등을 만드십시오.

// init database constants
// com.mysql.jdbc.Driver
private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
private static final String MAX_POOL = "250"; // set your own limit

연결 및 속성 초기화

일단 연결이 설정되면 재사용 목적으로 보관하는 것이 좋다.

// init connection object
private Connection connection;
// init properties object
private Properties properties;

속성 만들기

속성 개체가 연결 정보를 보관하고 이미 설정되어 있는지 확인하십시오.

// create properties
private Properties getProperties() {
    if (properties == null) {
        properties = new Properties();
        properties.setProperty("user", USERNAME);
        properties.setProperty("password", PASSWORD);
        properties.setProperty("MaxPooledStatements", MAX_POOL);
    }
    return properties;
}

데이터베이스 연결

이제 초기화된 상수와 속성을 사용하여 데이터베이스에 연결하십시오.

// connect database
public Connection connect() {
    if (connection == null) {
        try {
            Class.forName(DATABASE_DRIVER);
            connection = DriverManager.getConnection(DATABASE_URL, getProperties());
        } catch (ClassNotFoundException | SQLException e) {
            // Java 7+
            e.printStackTrace();
        }
    }
    return connection;
}

데이터베이스 연결 끊기

데이터베이스 작업이 완료되면 연결을 닫으십시오.

// disconnect database
public void disconnect() {
    if (connection != null) {
        try {
            connection.close();
            connection = null;
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

모든 것이 함께

이 클래스 사용MysqlConnect 이름 및 후 사용 가능

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

public class MysqlConnect {
    // init database constants
    private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";
    private static final String MAX_POOL = "250";

    // init connection object
    private Connection connection;
    // init properties object
    private Properties properties;

    // create properties
    private Properties getProperties() {
        if (properties == null) {
            properties = new Properties();
            properties.setProperty("user", USERNAME);
            properties.setProperty("password", PASSWORD);
            properties.setProperty("MaxPooledStatements", MAX_POOL);
        }
        return properties;
    }

    // connect database
    public Connection connect() {
        if (connection == null) {
            try {
                Class.forName(DATABASE_DRIVER);
                connection = DriverManager.getConnection(DATABASE_URL, getProperties());
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            }
        }
        return connection;
    }

    // disconnect database
    public void disconnect() {
        if (connection != null) {
            try {
                connection.close();
                connection = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

사용방법?

데이터베이스 클래스를 초기화하십시오.

// !_ note _! this is just init
// it will not create a connection
MysqlConnect mysqlConnect = new MysqlConnect();

암호의 다른 부분...

String sql = "SELECT * FROM `stackoverflow`";
try {
    PreparedStatement statement = mysqlConnect.connect().prepareStatement(sql);
    ... go on ...
    ... go on ...
    ... DONE ....
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    mysqlConnect.disconnect();
}

이것이 전부 :) 개선할 점이 있으면 편집하십시오!이게 도움이 되길 바래.

String url = "jdbc:mysql://127.0.0.1:3306/yourdatabase";
String user = "username";
String password = "password";

// Load the Connector/J driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
// Establish connection to MySQL
Connection conn = DriverManager.getConnection(url, user, password);

MySQL 데이터베이스에서 데이터를 가져오는 데 필요한 최소값은 다음과 같다.

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection
   ("jdbc:mysql://localhost:3306/foo", "root", "password");

Statement stmt = conn.createStatement();
stmt.execute("SELECT * FROM `FOO.BAR`");
stmt.close();
conn.close();

취향에 예외 처리, 구성 등을 추가한다.

수업 시간에 mysql 커넥터 항아리를 가지고 있어야 한다.

Java JDBC API는 데이터베이스로 모든 것을 만든다.JDBC를 사용하여 우리는 Java 애플리케이션을 다음과 같이 쓸 수 있다.
1. DB(모든 관계형 데이터베이스)로 질의 전송 또는 SQL 업데이트 2.DB에서 결과 검색 및 처리

아래 3단계로 모든 데이터베이스에서 데이터를 검색할 수 있음

Connection con = DriverManager.getConnection(
                     "jdbc:myDriver:DatabaseName",
                     dBuserName,
                     dBuserPassword);

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table");

while (rs.next()) {
    int x = rs.getInt("a");
    String s = rs.getString("b");
    float f = rs.getFloat("c");
}

여기에서 Java 응용프로그램에서 MySQL 데이터베이스를 연결하는 모든 단계를 볼 수 있다.다른 데이터베이스의 경우, 첫 단계에서만 드라이버를 변경하면 된다.데이터베이스에 대한 올바른 경로를 제공하고 사용자 이름과 암호를 수정했는지 확인하십시오.

http://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA을 방문하십시오.

MySQL JDBC 연결(useSSL 포함)

private String db_server = BaseMethods.getSystemData("db_server");
private String db_user = BaseMethods.getSystemData("db_user");
private String db_password = BaseMethods.getSystemData("db_password");

private String connectToDb() throws Exception {
   String jdbcDriver = "com.mysql.jdbc.Driver";
   String dbUrl = "jdbc:mysql://" + db_server  +
        "?verifyServerCertificate=false" +
        "&useSSL=true" +
        "&requireSSL=true";
    System.setProperty(jdbcDriver, "");
    Class.forName(jdbcDriver).newInstance();

    Connection conn = DriverManager.getConnection(dbUrl, db_user, db_password);
    Statement statement = conn.createStatement();
    String query = "SELECT EXTERNAL_ID FROM offer_letter where ID =" + "\"" + letterID + "\"";
    ResultSet resultSet = statement.executeQuery(query);
    resultSet.next();
    return resultSet.getString(1);
}

짧고 달콤한 코드.

try {       
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("Driver Loaded");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testDB","root","");
    //Database Name - testDB, Username - "root", Password - ""
    System.out.println("Connected...");         
} catch(Exception e) {
    e.printStackTrace();
}

SQL Server 2012의 경우

try {
    String url = "jdbc:sqlserver://KHILAN:1433;databaseName=testDB;user=Khilan;password=Tuxedo123"; 
    //KHILAN is Host    and 1433 is port number     
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    System.out.println("Driver Loaded");
    conn = DriverManager.getConnection(url);
    System.out.println("Connected...");
} catch(Exception e) {
    e.printStackTrace();
}

Connection얼마 전에 쓰고 있었는데, 가장 쉬운 방법인 것 같았지만, 거기에 만들라는 추천도 있었다.if정확히 말하자면

Connection con = DriverManager.getConnection(
                     "jdbc:myDriver:DatabaseName",
                     dBuserName,
                     dBuserPassword);
if (con != null){
 //..handle your code there 
}

아니면 그런 식으로 :)

아마 어떤 케이스가 있을 겁니다.getConnection돌아올 수 있다null:)

HOW
  • 빠른 샘플을 실행하도록 드라이버를 설정하려면 다음과 같이 하십시오.
1. Go to https://dev.mysql.com/downloads/connector/j/, get the latest version of Connector/J

2. Remember to set the classpath to include the path of the connector jar file.
If we don't set it correctly, below errors can occur:

No suitable driver found for jdbc:mysql://127.0.0.1:3306/msystem_development

java.lang.ClassNotFoundException: com.mysql.jdbc:Driver
  • CLASSPATH를 설정하려면

방법 1: CLASSPATH 변수를 설정하십시오.

export CLASSPATH=".:mysql-connector-java-VERSION.jar"
java MyClassFile

위의 명령에서 CLASSPATH를 현재 폴더와 mysql-connector-java-VERSION.jar 파일로 설정했다.그래서 언제java MyClassFile명령 실행, Java 응용 프로그램 실행기가 CLASSPATH에 있는 모든 Java 클래스를 로드하려고 시도한다. 그리고 그 다음,Driveclass => BOOM 에러가 사라졌다.

방법 2:.

java -cp .:mysql-connector-java-VERSION.jar MyClassFile

참고: Class.forName("com.mysql.jdbc.드라이버";;이것은 2019년 4월 이 순간에서 더 이상 사용되지 않는다.

이게 누군가에게 도움이 되길 바래!

MySql JDBC 연결:

Class.forName("com.mysql.jdbc.Driver");     

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/DatabaseName","Username","Password");         
Statement stmt=con.createStatement();            
stmt = con.createStatement();
ResultSet rs=stmt.executeQuery("Select * from Table");  

쇼트 코드

public class DB {

    public static Connection c;

    public static Connection getConnection() throws Exception {
        if (c == null) {
            Class.forName("com.mysql.jdbc.Driver");
            c =DriverManager.getConnection("jdbc:mysql://localhost:3306/DATABASE", "USERNAME", "Password");
        }
        return c;
    }

    // Send data TO Database
    public static void setData(String sql) throws Exception {
        DB.getConnection().createStatement().executeUpdate(sql);
    }

    // Get Data From Database
    public static ResultSet getData(String sql) throws Exception {
        ResultSet rs = DB.getConnection().createStatement().executeQuery(sql);
        return rs;
    }
}

JDBC 드라이버 다운로드

다운로드 링크(독립 플랫폼 선택): https://dev.mysql.com/downloads/connector/j/

JDBC 드라이버를 C 드라이브로 이동

파일의 압축을 풀고 C:\ 드라이브로 이동하십시오.운전자의 경로는 다음과 같아야 한다.C:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19

Java 실행

java -cp "C:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19.jar" testMySQL.java

testMySQL.java

import java.sql.*;
import java.io.*;

public class testMySQL {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
        try
        {  
            Class.forName("com.mysql.cj.jdbc.Driver");  
            Connection con=DriverManager.getConnection(  
                "jdbc:mysql://localhost:3306/db?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","");  
            Statement stmt=con.createStatement();  
            ResultSet rs=stmt.executeQuery("show databases;");  
            System.out.println("Connected");  
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

    }  

}

여기에 이미지 설명을 입력하십시오.

참조URL: https://stackoverflow.com/questions/2839321/connect-java-to-a-mysql-database

반응형