001: /*
002:
003: Derby - Class org.apache.derby.iapi.jdbc.EngineParameterMetaData
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: package org.apache.derby.iapi.jdbc;
022:
023: import java.sql.SQLException;
024: import java.sql.PreparedStatement;
025:
026: /**
027: * An internal api only, mainly for use in the network server.
028: *
029: * This interface imitates the ParameterMetaData interface from JDBC3.0
030: * We want to provide the ParameterMetaData functionality to JDKs before JDBC3.0.
031: * org.apache.derby.iapi.jdbc.EnginePreparedStatement interface returns an object
032: * of this type on a getEmbedParameterSetMetaData
033: * Once,JDK1.3 stops being supported, this interface can be removed and
034: * instead the JDBC 3.0 Class ParameterMetaData can be used
035: */
036: public interface EngineParameterMetaData {
037:
038: /**
039: * Retrieves the number of parameters in the PreparedStatement object for which
040: * this ParameterMetaData object contains information.
041: *
042: * @return the number of parameters
043: */
044: public int getParameterCount();
045:
046: /**
047: * Retrieves whether null values are allowed in the designated parameter.
048: *
049: * @param param - the first parameter is 1, the second is 2, ...
050: * @return the nullability status of the given parameter; one of
051: * ParameterMetaData.parameterNoNulls, ParameterMetaData.parameterNullable, or
052: * ParameterMetaData.parameterNullableUnknown
053: * @exception SQLException if a database access error occurs
054: */
055: public int isNullable(int param) throws SQLException;
056:
057: /**
058: * Retrieves whether values for the designated parameter can be signed numbers.
059: *
060: * @param param - the first parameter is 1, the second is 2, ...
061: * @return true if it can be signed numbers
062: * @exception SQLException if a database access error occurs
063: */
064: public boolean isSigned(int param) throws SQLException;
065:
066: /**
067: * Retrieves the designated parameter's number of decimal digits.
068: *
069: * @param param - the first parameter is 1, the second is 2, ...
070: * @return precision
071: * @exception SQLException if a database access error occurs
072: */
073: public int getPrecision(int param) throws SQLException;
074:
075: /**
076: * Retrieves the designated parameter's number of digits to right of the decimal point.
077: *
078: * @param param - the first parameter is 1, the second is 2, ...
079: * @return scale
080: * @exception SQLException if a database access error occurs
081: */
082: public int getScale(int param) throws SQLException;
083:
084: /**
085: *
086: * Retrieves the designated parameter's SQL type.
087: *
088: * @param param - the first parameter is 1, the second is 2, ...
089: * @return SQL type from java.sql.Types
090: * @exception SQLException if a database access error occurs
091: */
092: public int getParameterType(int param) throws SQLException;
093:
094: /**
095: *
096: * Retrieves the designated parameter's database-specific type name.
097: *
098: * @param param - the first parameter is 1, the second is 2, ...
099: * @return type the name used by the database. If the parameter
100: * type is a user-defined type, then a fully-qualified type name is returned.
101: * @exception SQLException if a database access error occurs
102: */
103: public String getParameterTypeName(int param) throws SQLException;
104:
105: /**
106: * Retrieves the fully-qualified name of the Java class whose instances should be
107: * passed to the method PreparedStatement.setObject.
108: *
109: * @param param - the first parameter is 1, the second is 2, ...
110: * @return the fully-qualified name of the class in the Java
111: * programming language that would be used by the method
112: * PreparedStatement.setObject to set the value in the specified parameter.
113: * This is the class name used for custom mapping.
114: * @exception SQLException if a database access error occurs
115: */
116: public String getParameterClassName(int param) throws SQLException;
117:
118: /**
119: * Retrieves the designated parameter's mode.
120: *
121: * @param param - the first parameter is 1, the second is 2, ...
122: * @return mode of the parameter; one of ParameterMetaData.parameterModeIn,
123: * ParameterMetaData.parameterModeOut, or ParameterMetaData.parameterModeInOut
124: * ParameterMetaData.parameterModeUnknown.
125: * @exception SQLException if a database access error occurs
126: */
127: public int getParameterMode(int param) throws SQLException;
128:
129: }
|