1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.sql;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream;
217365de1056414750d0a7d1fdd26025fd247f0d04Jesse Wilsonimport java.io.Reader;
227365de1056414750d0a7d1fdd26025fd247f0d04Jesse Wilsonimport java.math.BigDecimal;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.URL;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The {@code SQLInput} interface defines operations which apply to a type of
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * input stream which carries a series of values representing an instance of
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * an SQL structured type or SQL distinct type.
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This interface is used to define custom mappings of SQL <i>User Defined
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Types</i> (UDTs) to Java classes. It is used by JDBC drivers, therefore
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * application programmers do not normally use the {@code SQLInput} methods
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * directly. Reader methods such as {@code readLong} and {@code readBytes}
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * provide means to read values from an {@code SQLInput} stream.
35142d526f8bf90fb9bb63c637beb5299f39791f55Jesse Wilson * <p>
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * When the {@code getObject} method is called with an object which implements
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the {@code SQLData} interface, the JDBC driver determines the SQL type of the
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * UDT being mapped by calling the {@code SQLData.getSQLType} method. The driver
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * creates an instance of an {@code SQLInput} stream, filling the stream with
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the attributes of the UDT. The {@code SQLInput} stream is passed to the
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code SQLData.readSQL} method which then calls the {@code SQLInput} reader
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * methods to read the attributes.
43142d526f8bf90fb9bb63c637beb5299f39791f55Jesse Wilson *
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see SQLData
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface SQLInput {
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code String}.
50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute. {@code null} if the value is SQL {@code NULL}.
52f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String readString() throws SQLException;
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code boolean}
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * .
61f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code boolean}. {@code false} if the
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         value is SQL {@code NULL}.
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean readBoolean() throws SQLException;
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code byte}.
71f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code byte}. 0 if the value is SQL
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code NULL}.
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public byte readByte() throws SQLException;
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code short}.
81f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code short}. 0 if the value is SQL
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code NULL}.
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public short readShort() throws SQLException;
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of an {@code int}.
91f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as an {@code int}. 0 if the value is SQL
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code NULL}.
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int readInt() throws SQLException;
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code long}.
101f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code long}. 0 if the value is SQL
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code NULL}.
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public long readLong() throws SQLException;
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code float}.
111f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code float}. 0 if the value is SQL
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code NULL}.
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public float readFloat() throws SQLException;
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code double}.
121f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code double}. 0 if the value is SQL
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code NULL}.
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public double readDouble() throws SQLException;
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.math.BigDecimal}.
132f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the attribute as a {@code java.math.BigDecimal}. {@code null} if
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         the read returns SQL {@code NULL}.
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.math.BigDecimal
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public BigDecimal readBigDecimal() throws SQLException;
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a byte array.
143f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the attribute as a byte array. {@code null} if the read returns
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         SQL {@code NULL}.
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public byte[] readBytes() throws SQLException;
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.sql.Date}.
154f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.sql.Date}. {@code null} if
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         the value is SQL {@code NULL}.
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see Date
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Date readDate() throws SQLException;
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.sql.Time}.
166f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the attribute as a {@code java.sql.Time}. {@code null} if the
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         read returns SQL {@code NULL}.
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see Time
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Time readTime() throws SQLException;
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.sql.Timestamp}.
178f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the attribute as a {@code java.sql.Timestamp}. {@code null} if
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         the read returns SQL {@code NULL}.
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see Timestamp
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Timestamp readTimestamp() throws SQLException;
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a Unicode
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * character stream embodied as a {@code java.io.Reader}.
190f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.io.Reader}. {@code null} if
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         the value is SQL {@code NULL}.
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.io.Reader
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Reader readCharacterStream() throws SQLException;
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of an ASCII
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * character stream embodied as a {@code java.io.InputStream}.
202f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.io.InputStream}. {@code null}
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         if the value is SQL {@code NULL}.
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.io.InputStream
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputStream readAsciiStream() throws SQLException;
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a stream of bytes
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * embodied as a {@code java.io.InputStream}.
214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.io.InputStream}. {@code null}
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         if the value is SQL {@code NULL}.
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.io.InputStream
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public InputStream readBinaryStream() throws SQLException;
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.lang.Object}.
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The type of the {@code Object} returned is determined by the type mapping
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * for this JDBC driver, including any customized mappings, if present. A
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * type map is given to the {@code SQLInput} by the JDBC driver before the
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code SQLInput} is given to the application.
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * If the attribute is an SQL structured or distinct type, its SQL type is
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * determined. If the stream's type map contains an element for that SQL
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * type, the driver creates an object for the relevant type and invokes the
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * method {@code SQLData.readSQL} on it, which reads supplementary data from
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the stream using whichever protocol is defined for that method.
237f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as an Object. {@code null} if the value is SQL
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code NULL}.
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Object readObject() throws SQLException;
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.sql.Ref}.
248f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.sql.Ref}. {@code null} if the
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         value is SQL {@code NULL}.
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see Ref
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Ref readRef() throws SQLException;
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.sql.Blob}.
260f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.sql.Blob}. {@code null} if
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         the value is SQL {@code NULL}.
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Blob readBlob() throws SQLException;
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.sql.Clob}.
271f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.sql.Clob}. {@code null} if
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         the value is SQL {@code NULL}.
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see Clob
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Clob readClob() throws SQLException;
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the next attribute in the stream in the form of a {@code
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * java.sql.Array}.
283f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as an {@code Array}. {@code null} if the value
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         is SQL {@code NULL}.
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see Array
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Array readArray() throws SQLException;
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Reports whether the last value read was SQL {@code NULL}.
294f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if the last value read was SQL {@code NULL}, {@code
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         false} otherwise.
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean wasNull() throws SQLException;
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Reads the next attribute in the stream (SQL DATALINK value) and returns
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * it as a {@code java.net.URL} object.
305f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next attribute as a {@code java.net.URL}. {@code null} if the
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         value is SQL {@code NULL}.
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws SQLException
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if there is a database error.
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.net.URL
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public URL readURL() throws SQLException;
31336b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe
31436b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe    /**
315f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * Returns the next attribute in the stream in the form of a {@code
316f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * java.sql.NClob}.
31736b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe     *
318f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @return the next attribute as a {@code java.sql.NClob}. {@code null} if
319f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *         the value is SQL {@code NULL}.
320f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @throws SQLException
321f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *             if there is a database error.
32236b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe     */
32336b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe    public NClob readNClob() throws SQLException;
32436b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe
325f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes    /**
326f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * Returns the next attribute in the stream in the form of a {@code
327f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * java.lang.String}. Used for the NCHAR, NVARCHAR and LONGNVARCHAR types.
328f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * See {@link #readString} otherwise.
329f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *
330f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @return the next attribute as a {@code java.lang.String}. {@code null} if
331f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *         the value is SQL {@code NULL}.
332f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @throws SQLException
333f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *             if there is a database error.
334f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     */
33536b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe    public String readNString() throws SQLException;
33636b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe
337f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes    /**
338f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * Returns the next attribute in the stream in the form of a {@code
339f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * java.sql.SQLXML}.
340f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *
341f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @return the next attribute as a {@code java.sql.SQLXML}. {@code null} if
342f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *         the value is SQL {@code NULL}.
343f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @throws SQLException
344f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *             if there is a database error.
345f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     */
34636b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe    public SQLXML readSQLXML() throws SQLException;
34736b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe
348f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes    /**
349f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * Returns the next attribute in the stream in the form of a {@code
350f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * java.sql.RowId}. Used for the ROWID type.
351f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *
352f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @return the next attribute as a {@code java.sql.RowId}. {@code null} if
353f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *         the value is SQL {@code NULL}.
354f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     * @throws SQLException
355f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     *             if there is a database error.
356f3cc41ede7af1dd683e1a55eabc8f36963aec8abElliott Hughes     */
35736b3cdfbcd219d0308753d919638262c16fd34daJeremy Sharpe    public RowId readRowId() throws SQLException;
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
359