繁体   English   中英

如何将同一数据库连接用于多种方法(JAVA)

[英]How to use the same database connection for multiple methods(JAVA)

嗨,所以我开始学习JAVA中的数据库连接,并且正在开发一个需要数据库的小型应用程序。 我想知道使用Connection对象的正确方法是什么,以便可以将其与多种方法一起使用。

一种添加新记录的方法,另一种搜索特定键的方法,依此类推。 我将必须访问多个表,每个表都有自己的类和方法集。

如果有关于JAVA软件开发的好书,那也可能会很有用。

我认为在简单情况下,只需打开和关闭每个查询的连接即可。 对于更复杂的情况(例如服务器),可以使用连接池,该池保留打开的连接的列表

如果应用程序较小,则每次访问数据库时都可以创建一个连接对象,但是如果对数据库的请求数量很高,则可以使用连接池,可以使用BasicDataSource,这是一个apache项目,使用单例模式来包装实例的基本数据源并每次从包装类DataWrapper中检索连接对象

import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;

public class DataWrapper {

    private static DataSource datasource;

    private static void initialize() throws Exception {

        Properties props = new Properties();
        props.put("url", "jdbc:mysql://localhost:3306/testbd");
        props.put("password", "root");
        props.put("username", "root");
        props.put("driverClassName", "com.mysql.jdbc.Driver");
        props.put("initialSize", "10");
        props.put("maxTotal", "15");
        props.put("maxIdle", "10");
        props.put("minIdle", "5");
        datasource = BasicDataSourceFactory.createDataSource(props);

    }

    public static synchronized Connection getConnection() throws Exception {
        if (datasource == null) {
            initialize();
        }
        return datasource.getConnection();

    }

}

呼叫者

Connection con=DataWrapper.getConnection();
    PreparedStatement statement=con.prepareStatement("select * from users");

    ResultSet result= statement.executeQuery();
    result.next();
    System.out.println(result.getString(1));
    //dont forget to close the connection object
    con.close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM