首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java实现DataSource来连接到我的数据库

问用Java实现DataSource来连接到我的数据库
EN

Stack Overflow用户
提问于 2017-06-10 23:50:50
回答 1查看 638关注 0票数 1

我正在尝试编写一个实现DataSource的类。这看起来很简单,但我看到的Oracle示例都是这样声明类的:

代码语言:javascript
复制
public class ConnectionPoolingBean implements SessionBean {
    ....
}

我希望看到更多这样的东西:

代码语言:javascript
复制
public class MyDataSource implements DataSource {
    ....
}

另外,我也不明白连接是如何工作的。getConnection()方法只接受用户名和密码的参数。那么我如何连接到我的数据库呢?

归根结底,我需要了解的是如何连接到数据库并使用DataSource从查询中返回结果集。我只是看不到任何明确的例子来说明如何编写一个类来在我的WebApp上使用它。

这是我一直在阅读的内容,现在让我感到困惑。https://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html

EN

回答 1

Stack Overflow用户

发布于 2017-06-11 00:02:11

使用任何连接池为您使用case.If您正在使用应用程序服务器,您可以使用应用程序服务器连接池或使用开源dbcp连接池机制。

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.2.2</version>
</dependency>

示例

代码语言:javascript
复制
import org.apache.commons.dbcp2.BasicDataSource;


public class DataBaseUtility
{
    private static BasicDataSource dataSource;

    private static BasicDataSource getDataSource()
    {

        if (dataSource == null)
        {
            BasicDataSource ds = new BasicDataSource();
            ds.setUrl("jdbc:mysql://localhost/test");
            ds.setUsername("root");
            ds.setPassword("password");


            ds.setMinIdle(5);
            ds.setMaxIdle(10);
            ds.setMaxOpenPreparedStatements(100);

            dataSource = ds;
        }
        return dataSource;
    }

    public static void main(String[] args) throws SQLException
    {

        try (BasicDataSource dataSource = DataBaseUtility.getDataSource(); 
                Connection connection = dataSource.getConnection();
                PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM account");)
        {
System.out.println("The Connection Object is of Class: "+connection.getClass());
            try (ResultSet resultSet = pstmt.executeQuery();)
            {
                while (resultSet.next())
                {
                    System.out.println(resultSet.getString(1) + "," + resultSet.getString(2) + "," + resultSet.getString(3));
                }
            }
            catch (Exception e)
            {
                connection.rollback();
                e.printStackTrace();
            }
        }
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44475260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档