Java – connection using connectionpooldatasource
Connect to the database I need I intend to use the connectionpooldatasource class But how to use this instance to set up details about the database name (to which I want it to connect) Please help solve this problem
Solution
Try reading this document and example
edit
The example has just been modified from the link above
Preparation steps: – download MySQL server – download MySQL Java driver – download Apache commons pool – download commons DBCP – open a MySQL client like MySQL workbench and use the next script to create a database
delimiter $$ CREATE DATABASE `test_stackoverflow` /*!40100 DEFAULT CHARACTER SET utf8 */$$ delimiter $$ CREATE TABLE `test_table` ( `idtest_table` int(11) NOT NULL,`test_field` varchar(45) DEFAULT NULL,PRIMARY KEY (`idtest_table`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8$$ INSERT INTO `test_stackoverflow`.`test_table` (`idtest_table`,`test_field`) VALUES (1,'test1'); INSERT INTO `test_stackoverflow`.`test_table` (`idtest_table`,`test_field`) VALUES (2,'test2');
>Create a java project and add it to the classpath, myscl connector, pool and DBCP (you just need to download all these jars)
Add next course
import org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS;
import org.apache.commons.dbcp.datasources.SharedPoolDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.sqlException;
/**
* @author Sergii.Zagriichuk
*/
public class Pool {
private static DataSource ds;
static {
DriverAdapterCPDS cpds = new DriverAdapterCPDS();
try {
cpds.setDriver("com.MysqL.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
cpds.setUrl("jdbc:MysqL://localhost:3306/test_stackoverflow");
cpds.setUser("root");
cpds.setPassword("root");
SharedPoolDataSource tds = new SharedPoolDataSource();
tds.setConnectionPoolDataSource(cpds);
tds.setMaxActive(10);
tds.setMaxWait(50);
ds = tds;
}
public static Connection getConnection() throws sqlException {
return ds.getConnection();
}
}
The user name and password should be changed to your database user / password
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.sqlException;
import java.sql.Statement;
public class MainClass {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = Pool.getConnection();
// Do work with connection
statement = connection.createStatement();
String selectEmployeessql = "select * from test_table";
resultSet = statement.executeQuery(selectEmployeessql);
while (resultSet.next()) {
printTestTable(resultSet);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (sqlException e) {
} // nothing we can do
}
if (statement != null) {
try {
statement.close();
} catch (sqlException e) {
} // nothing we can do
}
if (connection != null) {
try {
connection.close();
} catch (sqlException e) {
} // nothing we can do
}
}
}
private static void printTestTable(ResultSet resultSet) throws sqlException {
System.out.print(resultSet.getInt("idtest_table")+",");
System.out.print(resultSet.getString("test_field"));
}
}
Just run the main method and you'll see the test values printed to the console!
