Java - проблемы с драйвером JDBC и подключением к базе данных MySQL - PullRequest
0 голосов
/ 19 июня 2010

Хорошо - я нашел версию драйвера, которая идет с базой данных ... однако теперь я получаю следующее.

Получено исключение!Сбой линии связи из-за основного исключения:

** НАЧАЛО НАЧАЛА ИСКЛЮЧЕНИЯ **

java.net.ConnectException СООБЩЕНИЕ: Тайм-аут соединения: соединение

STACKTRACE:

java.net.ConnectException: истекло время ожидания соединения: подключиться по адресу java.net.PlainSocketImpl.socketConnect (собственный метод) по адресу java.net.PlainSocketImpl.doConnect (PlainSocketImpl.java:333) по адресу java.net.PlainSocketImpl.connectToAress (PlainSocketImpl.java:195) на java.net.PlainSocketImpl.connect (PlainSocketImpl.java:182) на java.net.SocksSocketImpl.connect (SocksSocketImpl.java:366) на java.net.Socket.connect: Socket.j) на java.net.Socket.connect (Socket.java:475) на java.net.Socket. (Socket.java:372) на java.net.Socket. (Socket.java:215) на com.mysql.jdbc.StandardSocketFactory.connect (StandardSocketFactory.java:256) по адресу com.mysql.jdbc.MysqlIO. (MysqlIO.java:271) по адресу com.mysql.jdbc.Connection.createNewIO (Connection.java:2771) по адресу com.myscl.Connection. (Connection.java:1555) на com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:285) при java.sql.DriverManager.getConnection (DriverManager.java:582) при java.sql.DriverManager.getConnection (DriverManager.java:185) в freelancebillingapp.customerInfoUI.jButton1MouseClicked (customerInfoUI.java:221) по адресу freelancebillingapp.customerInfoUI.access $ 000 (customerInfoUI.java:12) по адресу freelancebillingapp.customerInfoUI $ 1.mouseClicked (customerInfoUI.java:59) по адресу java.awt.AWTEventMulticaster.java ()java.awt.Component.processMouseEvent (Component.java:6266) в javax.swing.JComponent.processMouseEvent (JComponent.java:3255) в java.awt.Component.processEvent (Component.java:6028) в java.awt.Container.processEvent (Container.java:2041) в java.awt.Component.dispatchEventImpl (Component.java:4630) в java.awt.Container.dispatchEventImpl (Container.java:2099) в java.awt.Component.dispatchEvent.Java: 4460) в java.awt.LightweightDispatcher.retargetMouseEvent (Container.java:4574) в java.awt.LightweightDispatcher.processMouseEvent (Container.java:4247) в java.awt.LightweightDispatcher.dispatchEvent (Container.java:4168) в java.awt.Container.dispatchEventImpl (Container.java:2085t) в java.dispatchEventImpl (Window.java:2475) в java.awt.Component.dispatchEvent (Component.java:4460) в java.awt.EventQueue.dispatchEvent (EventQueue.java:599) в java.awt.EventDispatchThread .Forp.Ompjava: 269) в java.awt.EventDispatchThread.pumpEventsForFilter (EventDispatchThread.java:184) в java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:174) в java.awtEttpjava.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:161) в java.awt.EventDispatchThread.run (EventDispatchThread.java:122)

** КОНЕЧНОЕ ИСКЛЮЧЕНИЕ ИСКЛЮЧЕНИЕ **

Последний пакетотправлено на сервер был 1 мс назад.

Ответы [ 3 ]

3 голосов
/ 19 июня 2010

Этот может не решить ее, но он говорит вам, что кто-то еще имел эту проблему.

Убедитесь, что у вас есть точная версия драйвера JDBC, соответствующая вашей версии MySQL.

Я настоятельно призываю вас переписать ваш код так: Вы вообще не закрываете ресурсы.

Адаптируйте его под свои нужды. Я создал локальную базу данных MySQL на своем компьютере и добавил таблицу клиентов. Работало просто отлично.

package persistence;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class DatabaseUtils
{
    private static final String URL = "jdbc:mysql://localhost:3306/contacts";
    private static final String USERNAME = "contacts";
    private static final String PASSWORD = "contacts";

    public static final String SELECT_SQL = "select customer_id, name, street, city, state, zip, phone, url from customer order by customer_id";
    public static final String INSERT_SQL = "insert into customer(name, street, city, state, zip, phone, url) values(?,?,?,?,?,?,?)";

    public static void main(String[] args)
    {
        Connection connection = null;

        try
        {
            connection = getConnection(URL, USERNAME, PASSWORD);
            List<Map> rows = findAllCustomers(connection);

            for (Map row : rows)
            {
                System.out.println(row);                    
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            close(connection);
        }
    }

    public static List<Map> findAllCustomers(Connection connection) throws SQLException
    {
        List<Map> rows = new ArrayList<Map>();
        PreparedStatement st = null;
        ResultSet rs = null;

        try
        {
            st = connection.prepareStatement(SELECT_SQL);
            rs = st.executeQuery();
            while (rs.next())
            {
                rows.add(map(rs));                
            }
        }
        finally
        {
            close(rs);
            close(st);
        }

        return rows;
    }

    private static Map<String, Object> map(ResultSet rs) throws SQLException
    {
        Map<String, Object> row = new LinkedHashMap<String, Object>();

        ResultSetMetaData meta = rs.getMetaData();

        int numColumns = meta.getColumnCount();
        for (int i = 1; i <= numColumns; ++i)
        {
            String column = meta.getColumnName(i);
            Object value = rs.getObject(i);
            row.put(column, value);
        }

        return row;
    }

    public static Connection getConnection(String url, String username, String password) throws SQLException
    {
        Driver driver = DriverManager.getDriver(url);

        DriverManager.registerDriver(driver);

        return DriverManager.getConnection(url, username, password);
    }

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

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

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

    public void rollback(Connection connection)
    {
        try
        {
            if (connection != null)
            {
                connection.rollback();
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
}
0 голосов
/ 22 мая 2013
            /*
             Connection
             */


            import com.mysql.jdbc.Connection;
            import java.sql.DriverManager;


            public class PersonalConnection {

                private String url = "jdbc:mysql://localhost:3306/";
                private String schema = "database name";
                private String uname = "";
                private String password = "";
                private Connection connection;

                public Connection openConnection() {
                    try {
                        try {
                            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
                        } catch (Exception ex) {
                        }
                        connection = (Connection) DriverManager.getConnection(url + schema, uname, password);
                    } catch (Exception ex) {
                    }
                    return connection;
                }

                public void closeConneciton() {
                    try {
                        connection.close();
                    } catch (Exception ex) {
                    }

                }
            }

        /* Servlet */



          response.setContentType("text/html;charset=UTF-8");
                    PrintWriter out = response.getWriter();
                    DetailsBean db = new DetailsBean();

                    String name = request.getParameter("name");
                    String countryname = request.getParameter("countryname");
                    String statename = request.getParameter("statename");

                    db.setName(name);
                    db.setCountry(countryname);
                    db.setState(statename);

                    DetailsManager dm = new DetailsManager();
                    String result = dm.insertDetailsManager(db);
                    if (result.equals("true")) {
                       /* RequestDispatcher rd = request.getRequestDispatcher("StateDetails.jsp?name=" + db.getName());
                        rd.forward(request, response);*/
                        response.sendRedirect("StateDetails.jsp");
                    } else {
                        out.print(result);
                    }

        /*  DAO */



        /*
         * To change this template, choose Tools | Templates
         * and open the template in the editor.
         */


        import com.mysql.jdbc.Connection;
        import java.sql.PreparedStatement;


        import java.sql.ResultSet;


        public class DetailsDAO {

            private Connection connection;
            private PersonalConnection con;

            public DetailsDAO() {
                con = new PersonalConnection();
            }

            public String insertRecordDAO(DetailsBean db) {

                int rowcount=0;
                try {
                    connection=con.openConnection();
                    String query = "INSERT INTO personal_details(user_name,country_name,state_name) values(?,?,?);";
                    PreparedStatement ps = connection.prepareStatement(query);
                    ps.setString(1, db.getName());
                    ps.setString(2, db.getCountry());
                    ps.setString(3, db.getState());
                    rowcount = ps.executeUpdate();
                    if(rowcount==1)
                    {
                        return "true";
                    }
                    else
                    {
                        return "false";
                    }
                } catch (Exception ex) {
                    return ex+"";

                } finally {
                    con.closeConneciton();
                }
            }

            public ResultSet getGetails() throws Exception
            {
                connection=con.openConnection();
                String query="SELECT * from state_details";
                PreparedStatement ps=connection.prepareStatement(query);
                ResultSet rs=ps.executeQuery();
                return rs;
            }
        }

    /*Manager*/

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */

    import java.util.ArrayList;


    public class DetailsManager {

        DetailsDAO detdao = new DetailsDAO();

        public String insertDetailsManager(DetailsBean db) {
            String rowcount = detdao.insertRecordDAO(db);
            return rowcount;
        }



    }

/*Bean*/


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



public class DetailsBean {

    private String name;
    private String country;
    private String state;

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }


}
0 голосов
/ 19 июня 2010

Может ли mysql принимать сетевые подключения? Когда вы соединяетесь с программой командной строки «mysql», вы не делаете сетевое соединение, но когда вы делаете с JDBC, вы делаете сетевое соединение. Попробуйте использовать «-h localhost» в командной строке mysql, чтобы увидеть.

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