sourcecode

java를 사용하여 mariadb에 접속하려면 어떻게 해야 하나요?

copyscript 2022. 9. 5. 23:12
반응형

java를 사용하여 mariadb에 접속하려면 어떻게 해야 하나요?

사용한 적이 있습니다.

Connection  connection = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/test", "username", "password"
);
Statement stmt = connection.createStatement();
stmt.executeUpdate("CREATE TABLE a (id int not null primary key, value varchar(20))");
stmt.close();
connection.close();

그러나 "No route to host"라는 오류가 나타납니다.

Java MariaDB의 예:

//STEP 1. Import required packages
package mariadb;

import java.sql.*;

public class Mariadb {
    // JDBC driver name and database URL

    static final String JDBC_DRIVER = "org.mariadb.jdbc.Driver";
    static final String DB_URL = "jdbc:mariadb://192.168.100.174/db";

    //  Database credentials
    static final String USER = "root";
    static final String PASS = "root";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            //STEP 2: Register JDBC driver
            Class.forName("org.mariadb.jdbc.Driver");

            //STEP 3: Open a connection
            System.out.println("Connecting to a selected database...");
            conn = DriverManager.getConnection(
                    "jdbc:mariadb://192.168.100.174/db", "root", "root");
            System.out.println("Connected database successfully...");

            //STEP 4: Execute a query
            System.out.println("Creating table in given database...");
            stmt = conn.createStatement();

            String sql = "CREATE TABLE REGISTRATION "
                    + "(id INTEGER not NULL, "
                    + " first VARCHAR(255), "
                    + " last VARCHAR(255), "
                    + " age INTEGER, "
                    + " PRIMARY KEY ( id ))";

            stmt.executeUpdate(sql);
            System.out.println("Created table in given database...");
        } catch (SQLException se) {
            //Handle errors for JDBC
            se.printStackTrace();
        } catch (Exception e) {
            //Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            //finally block used to close resources
            try {
                if (stmt != null) {
                    conn.close();
                }
            } catch (SQLException se) {
            }// do nothing
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException se) {
                se.printStackTrace();
            }//end finally try
        }//end try
        System.out.println("Goodbye!");
    }//end main
}//end JDBCExample

저는 이 예를 사용합니다.바인드 주소를 127.10.230.440으로 변경하고 서버 sudo /etc/init.d/mysql start를 재시작합니다.

목록 항목

public class ConnectionDemo {
    String userName,password,url,driver;
    Connection con;
    Statement st;

    public ConnectionDemo() {
        userName="root";
        password="root";
        url="jdbc:mariadb://localhost:3306/stud";
        driver="org.mariadb.jdbc.Driver";
        try {
            Class.forName(driver);
        con=DriverManager.getConnection(url, userName, password);
        st=con.createStatement();
        System.out.println("Connection is successful");
        } catch (Exception e) {
          e.printStackTrace();
        }


    }

문제는 TCP/IP 포트인 것 같습니다.Mariadb는 로컬호스트의 말을 듣지 않습니다.localhost에서 수신하도록 mariadb를 설정합니다.에서/etc/my.cnfconfig file의 [mysqld]행 아래에 다음 항목을 추가합니다.

bind-address = 127.10.230.440

또는 먼저 MYSQL 데이터베이스의 연결을 끊습니다.

저도 같은 문제가 있었는데, 그 이유는 제가 운전기사를 잘못 봤기 때문입니다.mariadb-java-client-XXX.jar(NO Source 버전!)가 필요하며 클래스 경로에 추가합니다.일이 잘 풀려서 조금이나마 도움이 됐으면 좋겠습니다.

언급URL : https://stackoverflow.com/questions/37909487/how-can-i-connect-to-mariadb-using-java

반응형