public static <V> ResultLayout<V[]> columnOf(@NotNull final Class<V> valueClass) { return new ResultLayout<V[]>(ResultLayout.Kind.ARRAY, false, oneOf(valueClass)); }
public static ResultLayout<long[]> columnOfLongs(int initialCapacity) { return new ResultLayout<long[]>(ResultLayout.Kind.ARRAY_OF_PRIMITIVES, false, oneOf(long.class), initialCapacity); }
public static <V> ResultLayout<V> singleOf(@NotNull final Class<V> valueClass) { return new ResultLayout<V>(ResultLayout.Kind.SINGLE_ROW, false, oneOf(valueClass)); }
public static ResultLayout<int[]> columnOfInts(int initialCapacity) { return new ResultLayout<int[]>(ResultLayout.Kind.ARRAY_OF_PRIMITIVES, false, oneOf(int.class), initialCapacity); }
@Override public void performMetaQueryCommands(@NotNull final Scriptum scriptum, @NotNull final String metaQueryName, final Object... params) { final SqlQuery<List<String>> metaQuery = scriptum.query(metaQueryName, listOf(oneOf(String.class))); performMetaQueryCommands(metaQuery, params); }
protected void performMetaQueryCommandsIterative(@NotNull final Scriptum scriptum, @NotNull final String metaQueryName, final int retries, final Object... params) { final SqlQuery<List<String>> metaQuery = scriptum.query(metaQueryName, listOf(oneOf(String.class))); db.inSession(new InSessionNoResult() { @Override public void run(@NotNull final DBSession session) { for (int i = 0; i < retries; ++i) { List<String> commands = session.query(metaQuery).withParams(params).run(); try { for (String command : commands) { if (command != null && command.length() > 0) { session.command(command).run(); } } i = retries + 1; } catch (DBException e) { if (i + 1 >= retries) throw e; } } } }); }
@Override public List<Integer> run(@NotNull final DBTransaction tran) { return tran.query("select X from X1000 order by 1", listOf(oneOf(Integer.class))).run(); } });
@Override public List<Integer> run(@NotNull final DBTransaction tran) { return tran.query("select X from X1000000 order by 1", listOf(oneOf(Integer.class))).run(); } });
@Test public void access_metadata() { final SqlQuery<List<Number>> query = new SqlQuery<List<Number>>("select X from X1000", listOf(oneOf(Number.class))); DB.inSession(new InSessionNoResult() { @Override public void run(@NotNull final DBSession session) { DBQueryRunner<List<Number>> qr = session.query(query).packBy(10); qr.run(); ResultSetMetaData md = qr.getSpecificService(ResultSetMetaData.class, ImplementationAccessibleService.Names.JDBC_METADATA); assertThat(md).isNotNull(); String columnName = null; try { columnName = md.getColumnName(1); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } assertThat(columnName).isEqualToIgnoringCase("X"); } }); }