If I use a singleton class for a database connection, can one user close the connection for everybody?

前端 未结 5 483
广开言路
广开言路 2020-12-13 10:43

I wrote a singleton class for obtaining a database connection.

Now my question is this: assume that there are 100 users accessing the application. If one user closes

5条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-13 10:59

    package es.sm2.conexion;
    
        import java.sql.Connection;
        import java.sql.DriverManager;
    
        public class ConexionTest {
            private static Connection conn = null;
    
            static Connection getConnection() throws Exception {
                if (conn == null) {
                    String url = "jdbc:mysql://localhost:3306/";
                    String dbName = "test";
                    String driver = "com.mysql.jdbc.Driver";
                    String userName = "userparatest";
                    String password = "userparatest";
    
                    Class.forName(driver).newInstance();
                    conn = DriverManager.getConnection(url + dbName, userName, password);
                }
    
                return conn;
            }
        }
    

    To close Connection

    public static void closeConnection(Connection conn) {
    
            try {
    
                conn.close();
    
            } catch (SQLException e) {
    
            }
    
        }
    

    To call to the connection:

    package conexion.uno;
    
    import java.sql.*;
    
    import es.sm2.conexion.ConexionTest;
    
    public class LLamadorConexion {
    
        public void llamada() {
            Connection conn = null;
            PreparedStatement statement = null;
            ResultSet resultado = null;
            String query = "SELECT * FROM empleados";
    
            try {
                conn = ConexionTest.getConnection();
                statement = conn.prepareStatement(query);
                resultado = statement.executeQuery();
    
                while (resultado.next()) {
                    System.out.println(resultado.getString(1) + "\t" + resultado.getString(2) + "\t" + resultado.getString(3) + "\t" );
                }
            } 
            catch (Exception e) {
                System.err.println("El porque del cascar: " + e.getMessage());
            } 
            finally {
                ConexionTest.closeConnection(conn);
    
            }
        }
    }
    

提交回复
热议问题