001: /*
002:
003: Derby - Class org.apache.derby.impl.jdbc.EmbedPreparedStatement20
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.impl.jdbc;
023:
024: import org.apache.derby.impl.jdbc.EmbedConnection;
025: import org.apache.derby.impl.jdbc.Util;
026:
027: import org.apache.derby.iapi.sql.ResultSet;
028: import org.apache.derby.iapi.error.StandardException;
029:
030: import org.apache.derby.iapi.reference.SQLState;
031:
032: import java.io.InputStream;
033:
034: import java.math.BigDecimal;
035:
036: import java.sql.SQLException;
037: import java.sql.SQLWarning;
038: import java.sql.Date;
039: import java.sql.Time;
040: import java.sql.Timestamp;
041:
042: /* ---- New jdbc 2.0 types ----- */
043: import java.sql.Array;
044: import java.sql.Blob;
045: import java.sql.Clob;
046: import java.sql.Ref;
047: import java.sql.Types;
048:
049: /**
050: * This class extends the EmbedPreparedStatement class in order to support new
051: * methods and classes that come with JDBC 2.0.
052: <P><B>Supports</B>
053: <UL>
054: <LI> JDBC 2.0
055: </UL>
056: * @see org.apache.derby.impl.jdbc.EmbedPreparedStatement
057: *
058: * @author francois
059: */
060: public class EmbedPreparedStatement20 extends
061: org.apache.derby.impl.jdbc.EmbedPreparedStatement {
062:
063: //////////////////////////////////////////////////////////////
064: //
065: // CONSTRUCTORS
066: //
067: //////////////////////////////////////////////////////////////
068: /*
069: Constructor assumes caller will setup context stack
070: and restore it.
071: @exception SQLException on error
072: */
073: public EmbedPreparedStatement20(EmbedConnection conn, String sql,
074: boolean forMetaData, int resultSetType,
075: int resultSetConcurrency, int resultSetHoldability,
076: int autoGeneratedKeys, int[] columnIndexes,
077: String[] columnNames) throws SQLException {
078:
079: super (conn, sql, forMetaData, resultSetType,
080: resultSetConcurrency, resultSetHoldability,
081: autoGeneratedKeys, columnIndexes, columnNames);
082: }
083:
084: /**
085: * JDBC 2.0
086: *
087: * Set a REF(<structured-type>) parameter.
088: *
089: * @param i the first parameter is 1, the second is 2, ...
090: * @param x an object representing data of an SQL REF Type
091: * @exception SQLException Feature not implemented for now.
092: */
093: public void setRef(int i, Ref x) throws SQLException {
094: throw Util.notImplemented();
095: }
096:
097: /**
098: * JDBC 2.0
099: *
100: * Set an Array parameter.
101: *
102: * @param i the first parameter is 1, the second is 2, ...
103: * @param x an object representing an SQL array
104: * @exception SQLException Feature not implemented for now.
105: */
106: public void setArray(int i, Array x) throws SQLException {
107: throw Util.notImplemented();
108: }
109:
110: /*
111: ** Methods using BigDecimal, moved out of EmbedPreparedStatement
112: ** to allow that class to support JSR169.
113: */
114: /**
115: * Set a parameter to a java.lang.BigDecimal value.
116: * The driver converts this to a SQL NUMERIC value when
117: * it sends it to the database.
118: *
119: * @param parameterIndex the first parameter is 1, the second is 2, ...
120: * @param x the parameter value
121: * @exception SQLException thrown on failure.
122: */
123: public final void setBigDecimal(int parameterIndex, BigDecimal x)
124: throws SQLException {
125: checkStatus();
126: try {
127: /* JDBC is one-based, DBMS is zero-based */
128: getParms().getParameterForSet(parameterIndex - 1)
129: .setBigDecimal(x);
130:
131: } catch (Throwable t) {
132: throw EmbedResultSet.noStateChangeException(t);
133: }
134: }
135:
136: /**
137: Allow explict setObject conversions by sub-classes for classes
138: not supported by this variant. In this case handle BigDecimal.
139: @return true if the object was set successfully, false if no valid
140: conversion exists.
141:
142: @exception SQLException value could not be set.
143: */
144: boolean setObjectConvert(int parameterIndex, Object x)
145: throws SQLException {
146: if (x instanceof BigDecimal) {
147: setBigDecimal(parameterIndex, (BigDecimal) x);
148: return true;
149: }
150: return false;
151: }
152: }
|