JDBC中的静态“连接”:连接可以混淆吗?

时间:2015-05-28 17:15:19

标签: java mysql servlets jdbc web

以下是我的代码。

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package DB;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author Yohan
 */
public abstract class DBMaster 
{
    public static Connection con;

 /**
 *
 * Initializes the connection
 */
    public void createConnection() 
    {   
        try
        {           
            Class.forName("com.mysql.jdbc.Driver");

            try
            {               
              con=DriverManager.getConnection("jdbc:mysql://localhost:3306/myDB","root","");
            } 
            catch (SQLException ex)
            {
                ex.printStackTrace();
            }            
        } 
        catch (ClassNotFoundException ex)
        {
             ex.printStackTrace();
        }
    }


    public void closeConnection() 
    {

    }

 /**
 *
 * check if the connection is successful or not
 */

    public void checkConnection() 
    {            
            ResultSet resultset=null;
            String cmd="select * from user";    

            try
            {
                Statement statement=con.createStatement();
                resultset=statement.executeQuery(cmd);

            }
            catch(SQLException ex)
            {
                if(ex.getLocalizedMessage().equals("No operations allowed after connection closed."))
                {
                    createConnection();
                    System.out.println("System Loaded");
                }
            }
            catch(NullPointerException ne)
            {
                createConnection();
                System.out.println("System Loaded");
            }

    }
}

如您所见,这是一个超类,子类将在其中扩展。扩展后,子类将使用static变量con。子类将包含数据库代码。

我在Web应用程序中实现了这个类,其中使用了JSP和Sevlet。现在我的问题是,可以在Web应用程序中“共享”JDBC连接吗?这里的Connectionstatic,那么“connection1”会与“connection2”混淆并做一些讨厌的工作吗?

例如,在此Web应用程序中,“connection1”正在删除记录,而“connection2”正在更新记录。 “connection1”属于“web应用程序用户1”,“connection2”属于“web应用程序用户2”。连接1可以与连接2混合并执行“更新”,而不是删除记录吗?

据我所知,这段代码允许非常快速的数据库访问,目前没有问题(只测试一个Web应用程序用户),但我愿意了解更多。

0 个答案:

没有答案