在Java中实现DataSource连接到我的数据库
问题描述:
我想写一个实现DataSource的类。这看起来很简单,但我看到了甲骨文所有的例子声明类是这样的:在Java中实现DataSource连接到我的数据库
public class ConnectionPoolingBean implements SessionBean {
....
}
我希望看到更多的东西是这样的:
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
答
case.If你正在使用的应用服务器,您可以使用应用服务器的连接池或使用开源DBCP连接池机制使用任何连接池供您使用。
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
例
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();
}
}
}
}
+0
感谢您发布此信息。我试图实施它。我会回复并将其标记为答案,一旦我开始。 –
你不应该自己实现一个DataSource。您的数据库驱动程序应该提供一个(或您的连接池库) –