Blog>
Snippets

Using Pooling to Manage Database Connections

Illustrate the use of connection pooling to manage database connections efficiently in a system where RAG components are used.
// HTML to include a button for triggering a database action
<button id='dbAction'>Perform DB Action</button>
This HTML snippet adds a button to the webpage which, when clicked, will trigger an action that interacts with the database using a pooled connection.
/* CSS to style the button */
#dbAction {
  padding: 10px 20px;
  background-color: #4CAF50;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

#dbAction:hover {
  background-color: #45a049;
}
The accompanying CSS styles the button with padding, background color, rounded borders, and a hover effect to make it visually appealing and clearly clickable.
// JavaScript to manage database connections using pooling
// Note: This example assumes the use of a Node.js environment with the `mysql` module.

const mysql = require('mysql');

// Create a pool of connections
const pool = mysql.createPool({
  connectionLimit : 10, // max number of connections to create
  host            : 'example.org',
  user            : 'dbuser',
  password        : 'dbpass',
  database        : 'dbname'
});

document.getElementById('dbAction').addEventListener('click', () => {
  // Get a connection from the pool
  pool.getConnection((err, connection) => {
    if (err) throw err; // Not connected!

    // Use the connection for querying
    connection.query('SELECT * FROM myTable', (error, results, fields) => {
      // Release the connection back to the pool
      connection.release();

      if (error) throw error;
      // Handle query result
      console.log(results);
    });
  });
});
This JavaScript snippet sets up a MySQL connection pool using the `mysql` package in a Node.js environment. It listens for a click on the button with id='dbAction' and on click, it retrieves a connection from the pool, performs a query, then releases the connection back to the pool. Error handling is included for both pool connection and query execution.