我是Java的初学者,也是我的一项工作。我必须做数据库操作。我有用于将数据插入数据库的Java代码,它工作正常。
public class JavaDBWork { public static void main(String[] args) { try { // create a mysql database connection String myDriver = "org.gjt.mm.mysql.Driver"; String myUrl = "jdbc:mysql://localhost/test"; Class.forName(myDriver); Connection conn = DriverManager.getConnection(myUrl, "root", ""); // create a sql date object so we can use it in our INSERT statement Calendar calendar = Calendar.getInstance(); java.sql.Date startDate = new java.sql.Date(calendar.getTime().getTime()); // the mysql insert statement String query = " insert into users (first_name, last_name, date_created, is_admin, num_points)" + " values (?, ?, ?, ?, ?)"; //Other Code }
我的问题是每次代码运行时,我的代码都必须创建一个数据库连接和准备好的语句对象,据我所知,这是一项昂贵的操作。
有什么方法可以保持与数据库的单个连接,并使用该连接来执行数据库工作?
您可以像这样使用设计模式Singleton Connection:
1-创建一个类SingletonConnection.java如下所示:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.EmptyStackException; public class SingletonConnection { private static Connection connection = null ; static { try{ Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection ("jdbc:mysql://localhost:3306/gestion_comptes","root",""); }catch(Exception ex) { } } public static Connection getConnection() throws Exception { return connection; } }
在其他班级中这样称呼它:
public class DaoImpl{ public Connection connection = SingletonConnection.getConnection(); public DaoImpl() throws Exception { if(connection==null) throw new Exception("impossible de se connecter 脿 la base de donn茅es"); } }