/** * @throws Exception If failed. */ @Test public void testParametersMetadata() throws Exception { try (Connection conn = DriverManager.getConnection(URL)) { conn.setSchema("\"pers\""); PreparedStatement stmt = conn.prepareStatement("select orgId from Person p where p.name > ? and p.orgId > ?"); ParameterMetaData meta = stmt.getParameterMetaData(); assert meta != null; assert meta.getParameterCount() == 2; assert meta.getParameterType(1) == Types.VARCHAR; assert meta.isNullable(1) == ParameterMetaData.parameterNullableUnknown; assert meta.getPrecision(1) == Integer.MAX_VALUE; assert meta.getParameterType(2) == Types.INTEGER; assert meta.isNullable(2) == ParameterMetaData.parameterNullableUnknown; } }
/** * @param meta Param metadata. * @param order Param order. * @throws SQLException On errror. */ public JdbcParameterMeta(ParameterMetaData meta, int order) throws SQLException { isNullable = meta.isNullable(order); signed = meta.isSigned(order); precision = meta.getPrecision(order); scale = meta.getScale(order); type = meta.getParameterType(order); typeName = meta.getParameterTypeName(order); typeClass = meta.getParameterClassName(order); mode = meta.getParameterMode(order); }
/** * @throws Exception If failed. */ @Test public void testParametersMetadata() throws Exception { try (Connection conn = DriverManager.getConnection(BASE_URL)) { conn.setSchema("pers"); PreparedStatement stmt = conn.prepareStatement("select orgId from Person p where p.name > ? and p.orgId > ?"); ParameterMetaData meta = stmt.getParameterMetaData(); assertNotNull(meta); assertEquals(2, meta.getParameterCount()); assertEquals(Types.VARCHAR, meta.getParameterType(1)); assertEquals(ParameterMetaData.parameterNullableUnknown, meta.isNullable(1)); assertEquals(Integer.MAX_VALUE, meta.getPrecision(1)); assertEquals(Types.INTEGER, meta.getParameterType(2)); assertEquals(ParameterMetaData.parameterNullableUnknown, meta.isNullable(2)); } }
@Test public void testCaseMetaData() throws Exception { String query1 = "SELECT a_string, b_string FROM atable WHERE case when a_integer = 1 then ? when a_integer > 2 then 2 end > 3"; Connection conn = DriverManager.getConnection(getUrl(), TestUtil.TEST_PROPERTIES); PreparedStatement statement = conn.prepareStatement(query1); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(1, pmd.getParameterCount()); assertEquals(BigDecimal.class.getName(), pmd.getParameterClassName(1)); assertEquals(ParameterMetaData.parameterNullable, pmd.isNullable(1)); String query2 = "SELECT a_string, b_string FROM atable WHERE case when a_integer = 1 then 1 when a_integer > 2 then 2 end > ?"; PreparedStatement statement2 = conn.prepareStatement(query2); ParameterMetaData pmd2 = statement2.getParameterMetaData(); assertEquals(1, pmd2.getParameterCount()); assertEquals(Integer.class.getName(), pmd2.getParameterClassName(1)); assertEquals(ParameterMetaData.parameterNullable, pmd2.isNullable(1)); }
@Test public void testCaseMetaData() throws Exception { String query1 = "SELECT a_string, b_string FROM atable WHERE case when a_integer = 1 then ? when a_integer > 2 then 2 end > 3"; Connection conn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES)); PreparedStatement statement = conn.prepareStatement(query1); ParameterMetaData pmd = statement.getParameterMetaData(); assertEquals(1, pmd.getParameterCount()); assertEquals(BigDecimal.class.getName(), pmd.getParameterClassName(1)); assertEquals(ParameterMetaData.parameterNullable, pmd.isNullable(1)); String query2 = "SELECT a_string, b_string FROM atable WHERE case when a_integer = 1 then 1 when a_integer > 2 then 2 end > ?"; PreparedStatement statement2 = conn.prepareStatement(query2); ParameterMetaData pmd2 = statement2.getParameterMetaData(); assertEquals(1, pmd2.getParameterCount()); assertEquals(Integer.class.getName(), pmd2.getParameterClassName(1)); assertEquals(ParameterMetaData.parameterNullable, pmd2.isNullable(1)); }
@Override public Integer call() throws SQLException { return pmeta.isNullable(param); } });
private void logParam(final ParameterMetaData md, final Parameter parameter) throws SQLException { final int i = parameter.key; final String format = String.format(" - PARAM index=%s, type%s, typeName=%s, className=%s, nullable=%s, mode=%s, precision=%s, value=%s", i, md.getParameterType(i), md.getParameterTypeName(i), md.getParameterClassName(i), md.isNullable(i), md.getParameterMode(i), md.getPrecision(i), parameter.value ); LOGGER.info(format); }
private void logParam(final ParameterMetaData md, final Parameter parameter) throws SQLException { final int i = parameter.key; final String format = String.format(" - PARAM index=%s, type%s, typeName=%s, className=%s, nullable=%s, mode=%s, precision=%s, value=%s", i, md.getParameterType(i), md.getParameterTypeName(i), md.getParameterClassName(i), md.isNullable(i), md.getParameterMode(i), md.getPrecision(i), parameter.value ); LOGGER.info(format); }
if(params[i] == null) { try { if(ps.getParameterMetaData().isNullable(i + 1) == ParameterMetaData.parameterNoNulls) { throw new CRESQLException("Parameter " + (i + 1) + " cannot be set to null. Check your parameters and try again.", t);
assertTrue(ParameterMetaData.parameterNoNulls == params.isNullable(1) || ParameterMetaData.parameterNullableUnknown == params.isNullable(1)); assertTrue(ParameterMetaData.parameterNullable == params.isNullable(2) || ParameterMetaData.parameterNullableUnknown == params.isNullable(2)); assertEquals(10, params.getPrecision(2)); assertEquals(5, params.getScale(2)); assertTrue(ParameterMetaData.parameterNoNulls == params.isNullable(3) || ParameterMetaData.parameterNullableUnknown == params.isNullable(3));
/** * @param meta Param metadata. * @param order Param order. * @throws SQLException On errror. */ public JdbcParameterMeta(ParameterMetaData meta, int order) throws SQLException { isNullable = meta.isNullable(order); signed = meta.isSigned(order); precision = meta.getPrecision(order); scale = meta.getScale(order); type = meta.getParameterType(order); typeName = meta.getParameterTypeName(order); typeClass = meta.getParameterClassName(order); mode = meta.getParameterMode(order); }
break; nullable = pmd.isNullable(paramIndex); if (nullable == ParameterMetaData.parameterNullable) { flags &= gfxdConstants.COLUMN_NULLABLE;
break; nullable = pmd.isNullable(paramIndex); if (nullable == ParameterMetaData.parameterNullable) { flags &= gfxdConstants.COLUMN_NULLABLE;
(pmeta.isNullable(jdbcElemNum) == JDBC30Translation.PARAMETER_NULLABLE);
(pmeta.isNullable(jdbcElemNum) == JDBC30Translation.PARAMETER_NULLABLE);
(pmeta.isNullable(jdbcElemNum) == JDBC30Translation.PARAMETER_NULLABLE);
assertEquals(0, pm.getPrecision(1)); assertEquals(0, pm.getScale(1)); assertEquals(ResultSetMetaData.columnNullableUnknown, pm.isNullable(1)); assertEquals(pm.isSigned(1), true); assertThrows(SQLErrorCode.INVALID_VALUE_2, pm).getPrecision(0);
(pmeta.isNullable(i) == JDBC30Translation.PARAMETER_NULLABLE)); int colType = (hasRs ? rsmeta.getColumnType(i) : pmeta.getParameterType(i)); int[] outlen = {-1};
(pmeta.isNullable(i) == JDBC30Translation.PARAMETER_NULLABLE)); int colType = (hasRs ? rsmeta.getColumnType(i) : pmeta.getParameterType(i)); int[] outlen = {-1};
(pmeta.isNullable(i) == JDBC30Translation.PARAMETER_NULLABLE)); int colType = (hasRs ? rsmeta.getColumnType(i) : pmeta.getParameterType(i)); int[] outlen = {-1};