import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class TransactionExample {
private static final String INSERT_QUERY = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)";
public static void main(String[] args) {
DataSource dataSource = setupDataSource();
Connection connection = null;
PreparedStatement statement = null;
try {
connection = dataSource.getConnection();
statement = connection.prepareStatement(INSERT_QUERY);
statement.setInt(1, 1);
statement.setString(2, "John Doe");
statement.setString(3, "john.doe@example.com");
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
if (connection != null) {
try {
} catch (SQLException ex) {
ex.printStackTrace();
}
}
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
private static DataSource setupDataSource() {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
dataSource.setUser("username");
dataSource.setPassword("password");
return dataSource;
}
}
<c3p0-config>
<named-config name="default">
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydatabase</property>
<property name="user">username</property>
<property name="password">password</property>
<property name="maxPoolSize">50</property>
<property name="minPoolSize">5</property>
<property name="maxIdleTime">1800</property>
</named-config>
</c3p0-config>