docs: private void initAdapter()
      {
          Connection tmp = null;
          DatabaseMetaData meta = null;
          try
          {
              tmp = _ds.getConnection();
              meta = tmp.getMetaData();
              product = meta.getDatabaseProductName().toLowerCase();
          }
          catch (SQLException e)
          {
              throw new DatabaseException("Cannot connect to the database", e);
          }
          finally
          {
              try
              {
                  if (tmp != null)
                  {
                      tmp.close();
                  }
              }
              catch (SQLException e)
              {
                  // Nothing to do.
              }
          }
  
          DbAdapter newAdpt = null;
          for (String s : ADAPTERS)
          {
              try
              {
                  Class<? extends DbAdapter> clazz = Db.class.getClassLoader().loadClass(s).asSubclass(DbAdapter.class);
                  newAdpt = clazz.newInstance();
                  if (newAdpt.compatibleWith(meta))
                  {
                      adapter = newAdpt;
                      break;
                  }
              }
              catch (Exception e)
              {
                  throw new DatabaseException("Issue when loading database adapter named: " + s, e);
              }
          }
  
          if (adapter == null)
          {
              throw new DatabaseException("Unsupported database! There is no JQM database adapter compatible with product name " + product);
          }
          else
          {
              jqmlogger.info("Using database adapter {}", adapter.getClass().getCanonicalName());
          }
      }