簡體   English   中英

用Java連接Mysql數據庫

[英]Connecting Mysql database with Java

-代碼已更新-

我正在嘗試使用JDBC連接MySQL數據庫,但無法使連接正常工作。 我不確定我構造連接字符串的方式是否正確。 這是代碼和錯誤:

碼:

    Connection conn;
    String userName = "root";
    String serverName = "127.0.0.1";
    String portNumber = "3306";
    String password = "password";
    String dbName = "myDB";

    /**
     * Establishes connection with the sql database
     * @throws SQLException
     */
    public SQLConnector() throws SQLException {
        setConnection();
    }

    private void setConnection() throws SQLException {
        Properties connectionProps = new Properties();
        connectionProps.put("user", this.userName);
        connectionProps.put("password", this.password);
        String connectionString = "jdbc:mysql://" + this.serverName
                + ":" + this.portNumber + "/" + this.dbName;
        System.out.println(connectionString);
        this.conn = DriverManager.getConnection(connectionString, connectionProps);
    }

錯誤:

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:627)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1013)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.source.database.SQLConnector.setConnection(SQLConnector.java:69)
    at com.source.database.SQLConnector.<init>(SQLConnector.java:25)
    at com.source.main.Start.main(Start.java:13)
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2914)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:559)
    ... 18 more

我確實嘗試過將MySQL與Java連接起來。 這是我的方法。

private Connection getConnection() throws SQLException 
    {
        Connection conn = null;
        Properties connectionProps = new Properties();
        connectionProps.put("user", this.userName);
        connectionProps.put("password", this.password);

        conn = DriverManager.getConnection("jdbc:mysql://"
                + this.serverName + ":" + this.portNumber + "/" + this.dbName,
                connectionProps);

        return conn;
    }

public boolean executeUpdate(Connection connection, String command) throws SQLException
    {
        try
        {
          Statement st = connection.createStatement();

          st.executeUpdate(command);

          connection.close();
        }
        catch (Exception e)
        {
          System.err.println("Got an exception!");
          e.printStackTrace();
        }

        return false;
    }

executeUpdate用於更新,插入和從表中刪除。 希望能有所幫助。

哦,而且JDBC驅動程序也必須位於程序路徑中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM