## Using connections

When you need to execute sequential queries (without a transaction), you can create a new connection or borrow one from the pool:

    Code not translatable

Prepared queries can be created:

    require 'vertx-sql-client/tuple'
    connection.prepare("SELECT * FROM users WHERE first_name LIKE ?") { |ar1_err,ar1|
      if (ar1_err == nil)
        pq = ar1
        pq.execute(VertxSqlClient::Tuple.of("julien")) { |ar2_err,ar2|
          if (ar2_err == nil)
            # All rows
            rows = ar2
          end
        }
      end
    }

Note | prepared query caching depends on the `cachePreparedStatements` and does not depend on whether you are creating prepared queries or use `direct prepared queries`

`PreparedQuery` can perform efficient batching:

    require 'vertx-sql-client/tuple'
    connection.prepare("INSERT INTO USERS (id, name) VALUES (?, ?)") { |ar1_err,ar1|
      if (ar1_err == nil)
        prepared = ar1

        # Create a query : bind parameters
        batch = Array.new

        # Add commands to the createBatch
        batch.push(VertxSqlClient::Tuple.of("julien", "Julien Viet"))
        batch.push(VertxSqlClient::Tuple.of("emad", "Emad Alblueshi"))

        prepared.batch(batch) { |res_err,res|
          if (res_err == nil)

            # Process rows
            rows = res
          else
            puts "Batch failed #{res_err}"
          end
        }
      end
    }