code: public TableResult get_table( String sql, int maxrows, String args[] ) throws jsqlite.Exception {
          TableResult ret = new TableResult(maxrows);
          if (!is3()) {
              try {
                  exec(sql, ret, args);
              } catch (jsqlite.Exception e) {
                  if (maxrows <= 0 || !ret.atmaxrows) {
                      throw e;
                  }
              }
          } else {
              synchronized (this) {
                  /* only one statement !!! */
                  Vm vm = compile(sql, args);
                  set_last_error(vm.error_code);
                  if (ret.maxrows > 0) {
                      while( ret.nrows < ret.maxrows && vm.step(ret) ) {
                          set_last_error(vm.error_code);
                      }
                  } else {
                      while( vm.step(ret) ) {
                          set_last_error(vm.error_code);
                      }
                  }
                  vm.finalize();
              }
          }
          return ret;
      }
docs: Convenience method to retrieve an entire result
  set into memory.
  
  @param sql the SQL statement to be executed
  @param maxrows the max. number of rows to retrieve
  @param args arguments for the SQL statement, '%q' substitution
  @return result set