java.sql.PreparedStatement#isWrapperFor ( )源码实例Demo

下面列出了java.sql.PreparedStatement#isWrapperFor ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: nexus-public   文件: AbstractJsonTypeHandler.java
@Override
public final void setNonNullParameter(
    final PreparedStatement ps,
    final int parameterIndex,
    final T parameter,
    final JdbcType jdbcType) throws SQLException
{
  byte[] json = writeToJson(parameter);
  if (ps.isWrapperFor(org.h2.jdbc.JdbcPreparedStatement.class)) {
    // H2 only accepts JSON passed as UTF8 byte array
    ps.setBytes(parameterIndex, json);
  }
  else {
    // while PostgreSQL and other DBs want a UTF8 string
    ps.setString(parameterIndex, new String(json, UTF_8));
  }
}
 
源代码2 项目: presto   文件: MySqlClient.java
@Override
public PreparedStatement getPreparedStatement(Connection connection, String sql)
        throws SQLException
{
    PreparedStatement statement = connection.prepareStatement(sql);
    if (statement.isWrapperFor(Statement.class)) {
        statement.unwrap(Statement.class).enableStreamingResults();
    }
    return statement;
}
 
源代码3 项目: calcite-avatica   文件: JdbcMeta.java
@Override public ExecuteResult execute(StatementHandle h,
    List<TypedValue> parameterValues, int maxRowsInFirstFrame) throws NoSuchStatementException {
  try {
    if (MetaImpl.checkParameterValueHasNull(parameterValues)) {
      throw new SQLException("exception while executing query: unbound parameter");
    }

    final StatementInfo statementInfo = statementCache.getIfPresent(h.id);
    if (null == statementInfo) {
      throw new NoSuchStatementException(h);
    }
    final List<MetaResultSet> resultSets;
    final PreparedStatement preparedStatement =
        (PreparedStatement) statementInfo.statement;

    if (parameterValues != null) {
      for (int i = 0; i < parameterValues.size(); i++) {
        TypedValue o = parameterValues.get(i);
        preparedStatement.setObject(i + 1, o.toJdbc(calendar));
      }
    }

    if (preparedStatement.execute()) {
      final Signature signature2;
      if (preparedStatement.isWrapperFor(AvaticaPreparedStatement.class)) {
        signature2 = h.signature;
      } else {
        h.signature = signature(preparedStatement.getMetaData(),
            preparedStatement.getParameterMetaData(), h.signature.sql,
            Meta.StatementType.SELECT);
        signature2 = h.signature;
      }

      // Make sure we set this for subsequent fetch()'s to find the result set.
      statementInfo.setResultSet(preparedStatement.getResultSet());

      if (statementInfo.getResultSet() == null) {
        resultSets = Collections.<MetaResultSet>singletonList(
            JdbcResultSet.empty(h.connectionId, h.id, signature2));
      } else {
        resultSets = Collections.<MetaResultSet>singletonList(
            JdbcResultSet.create(h.connectionId, h.id, statementInfo.getResultSet(),
                maxRowsInFirstFrame, signature2));
      }
    } else {
      resultSets = Collections.<MetaResultSet>singletonList(
          JdbcResultSet.count(h.connectionId, h.id, preparedStatement.getUpdateCount()));
    }

    return new ExecuteResult(resultSets);
  } catch (SQLException e) {
    throw propagate(e);
  }
}
 
源代码4 项目: quark   文件: QuarkMetaImpl.java
@Override
public ExecuteResult execute(StatementHandle h,
                             List<TypedValue> parameterValues, long maxRowCount) {
  try {
    if (MetaImpl.checkParameterValueHasNull(parameterValues)) {
      throw new SQLException("exception while executing query: unbound parameter");
    }

    final StatementInfo statementInfo = Objects.requireNonNull(
        statementCache.getIfPresent(h.id),
        "Statement not found, potentially expired. " + h);
    final List<MetaResultSet> resultSets = new ArrayList<>();
    final PreparedStatement preparedStatement =
        (PreparedStatement) statementInfo.statement;

    if (parameterValues != null) {
      for (int i = 0; i < parameterValues.size(); i++) {
        TypedValue o = parameterValues.get(i);
        preparedStatement.setObject(i + 1, o.toJdbc(calendar));
      }
    }

    if (preparedStatement.execute()) {
      final Meta.Frame frame;
      final Signature signature2;
      if (preparedStatement.isWrapperFor(AvaticaPreparedStatement.class)) {
        signature2 = h.signature;
      } else {
        h.signature = signature(preparedStatement.getMetaData(),
            preparedStatement.getParameterMetaData(), h.signature.sql,
            Meta.StatementType.SELECT);
        signature2 = h.signature;
      }

      statementInfo.resultSet = preparedStatement.getResultSet();
      if (statementInfo.resultSet == null) {
        frame = Frame.EMPTY;
        resultSets.add(QuarkMetaResultSet.empty(h.connectionId, h.id, signature2));
      } else {
        resultSets.add(
            QuarkMetaResultSet.create(h.connectionId, h.id,
                statementInfo.resultSet, maxRowCount, signature2));
      }
    } else {
      resultSets.add(
          QuarkMetaResultSet.count(
              h.connectionId, h.id, preparedStatement.getUpdateCount()));
    }

    return new ExecuteResult(resultSets);
  } catch (SQLException e) {
    throw propagate(e);
  }
}
 
源代码5 项目: database   文件: StatementAdaptor.java
public void addParameters(PreparedStatement ps, Object[] parameters) throws SQLException {
  for (int i = 0; i < parameters.length; i++) {
    Object parameter = parameters[i];

    // Unwrap secret args here so we can use them
    if (parameter instanceof SecretArg) {
      parameter = ((SecretArg) parameter).getArg();
    }

    if (parameter == null) {
      ParameterMetaData metaData;
      int parameterType;
      try {
        metaData = ps.getParameterMetaData();
        parameterType = metaData.getParameterType(i + 1);
      } catch (SQLException e) {
        throw new DatabaseException("Parameter " + (i + 1)
            + " was null and the JDBC driver could not report the type of this column."
            + " Please update the JDBC driver to support PreparedStatement.getParameterMetaData()"
            + " or use SqlNull in place of null values to this query.", e);
      }
      ps.setNull(i + 1, parameterType);
    } else if (parameter instanceof SqlNull) {
      SqlNull sqlNull = (SqlNull) parameter;
      if (options.useBytesForBlob() && sqlNull.getType() == Types.BLOB) {
        // The setNull() seems more correct, but PostgreSQL chokes on it
        ps.setBytes(i + 1, null);
      } else {
        ps.setNull(i + 1, sqlNull.getType());
      }
    } else if (parameter instanceof java.sql.Date) {
      ps.setDate( i + 1, (java.sql.Date) parameter);
    } else if (parameter instanceof Date) {
      // this will correct the millis and nanos according to the JDBC spec
      // if a correct Timestamp is passed in, this will detect that and leave it alone
      ps.setTimestamp(i + 1, toSqlTimestamp((Date) parameter), options.calendarForTimestamps());
    } else if (parameter instanceof Reader) {
      if (options.useStringForClob()) {
        ps.setString(i + 1, readerToString((Reader) parameter));
      } else {
        ps.setCharacterStream(i + 1, (Reader) parameter);
      }
    } else if (parameter instanceof InputStream) {
      if (options.useBytesForBlob()) {
        ps.setBytes(i + 1, streamToBytes((InputStream) parameter));
      } else {
        ps.setBinaryStream(i + 1, (InputStream) parameter);
      }
    } else if (parameter instanceof Float) {
      if (options.flavor() == Flavor.oracle && ps.isWrapperFor(OraclePreparedStatement.class)) {
        // The Oracle 11 driver setDouble() first converts the double to NUMBER, causing underflow
        // for small values so we need to use the proprietary mechanism
        ps.unwrap(OraclePreparedStatement.class).setBinaryFloat(i + 1, (Float) parameter);
      } else {
        ps.setFloat(i + 1, (Float) parameter);
      }
    } else if (parameter instanceof Double) {
      if (options.flavor() == Flavor.oracle && ps.isWrapperFor(OraclePreparedStatement.class)) {
        // The Oracle 11 driver setDouble() first converts the double to NUMBER, causing underflow
        // for small values so we need to use the proprietary mechanism
        ps.unwrap(OraclePreparedStatement.class).setBinaryDouble(i + 1, (Double) parameter);
      } else {
        ps.setDouble(i + 1, (Double) parameter);
      }
    } else {
      ps.setObject(i + 1, parameter);
    }
  }
}