blob: fd33529667e17ff28f97b0b979dfe27fa56a3f79 [file] [log] [blame]
Alan Viverette3da604b2020-06-10 18:34:39 +00001/*
2 * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package javax.sql;
27
28import java.sql.*;
29import java.io.*;
30import java.math.*;
31import java.util.*;
32
33/**
34 * The interface that adds support to the JDBC API for the
35 * JavaBeans<sup><font size=-2>TM</font></sup> component model.
36 * A rowset, which can be used as a JavaBeans component in
37 * a visual Bean development environment, can be created and
38 * configured at design time and executed at run time.
39 * <P>
40 * The <code>RowSet</code>
41 * interface provides a set of JavaBeans properties that allow a <code>RowSet</code>
42 * instance to be configured to connect to a JDBC data source and read
43 * some data from the data source. A group of setter methods (<code>setInt</code>,
44 * <code>setBytes</code>, <code>setString</code>, and so on)
45 * provide a way to pass input parameters to a rowset's command property.
46 * This command is the SQL query the rowset uses when it gets its data from
47 * a relational database, which is generally the case.
48 * <P>
49 * The <code>RowSet</code>
50 * interface supports JavaBeans events, allowing other components in an
51 * application to be notified when an event occurs on a rowset,
52 * such as a change in its value.
53 *
54 * <P>The <code>RowSet</code> interface is unique in that it is intended to be
55 * implemented using the rest of the JDBC API. In other words, a
56 * <code>RowSet</code> implementation is a layer of software that executes "on top"
57 * of a JDBC driver. Implementations of the <code>RowSet</code> interface can
58 * be provided by anyone, including JDBC driver vendors who want to
59 * provide a <code>RowSet</code> implementation as part of their JDBC products.
60 * <P>
61 * A <code>RowSet</code> object may make a connection with a data source and
62 * maintain that connection throughout its life cycle, in which case it is
63 * called a <i>connected</i> rowset. A rowset may also make a connection with
64 * a data source, get data from it, and then close the connection. Such a rowset
65 * is called a <i>disconnected</i> rowset. A disconnected rowset may make
66 * changes to its data while it is disconnected and then send the changes back
67 * to the original source of the data, but it must reestablish a connection to do so.
68 * <P>
69 * A disconnected rowset may have a reader (a <code>RowSetReader</code> object)
70 * and a writer (a <code>RowSetWriter</code> object) associated with it.
71 * The reader may be implemented in many different ways to populate a rowset
72 * with data, including getting data from a non-relational data source. The
73 * writer can also be implemented in many different ways to propagate changes
74 * made to the rowset's data back to the underlying data source.
75 * <P>
76 * Rowsets are easy to use. The <code>RowSet</code> interface extends the standard
77 * <code>java.sql.ResultSet</code> interface. The <code>RowSetMetaData</code>
78 * interface extends the <code>java.sql.ResultSetMetaData</code> interface.
79 * Thus, developers familiar
80 * with the JDBC API will have to learn a minimal number of new APIs to
81 * use rowsets. In addition, third-party software tools that work with
82 * JDBC <code>ResultSet</code> objects will also easily be made to work with rowsets.
83 *
84 * @since 1.4
85 */
86
87public interface RowSet extends ResultSet {
88
89 //-----------------------------------------------------------------------
90 // Properties
91 //-----------------------------------------------------------------------
92
93 //-----------------------------------------------------------------------
94 // The following properties may be used to create a Connection.
95 //-----------------------------------------------------------------------
96
97 /**
98 * Retrieves the url property this <code>RowSet</code> object will use to
99 * create a connection if it uses the <code>DriverManager</code>
100 * instead of a <code>DataSource</code> object to establish the connection.
101 * The default value is <code>null</code>.
102 *
103 * @return a string url
104 * @exception SQLException if a database access error occurs
105 * @see #setUrl
106 */
107 String getUrl() throws SQLException;
108
109 /**
110 * Sets the URL this <code>RowSet</code> object will use when it uses the
111 * <code>DriverManager</code> to create a connection.
112 *
113 * Setting this property is optional. If a URL is used, a JDBC driver
114 * that accepts the URL must be loaded before the
115 * rowset is used to connect to a database. The rowset will use the URL
116 * internally to create a database connection when reading or writing
117 * data. Either a URL or a data source name is used to create a
118 * connection, whichever was set to non null value most recently.
119 *
120 * @param url a string value; may be <code>null</code>
121 * @exception SQLException if a database access error occurs
122 * @see #getUrl
123 */
124 void setUrl(String url) throws SQLException;
125
126 /**
127 * Retrieves the logical name that identifies the data source for this
128 * <code>RowSet</code> object.
129 *
130 * @return a data source name
131 * @see #setDataSourceName
132 * @see #setUrl
133 */
134 String getDataSourceName();
135
136 /**
137 * Sets the data source name property for this <code>RowSet</code> object to the
138 * given <code>String</code>.
139 * <P>
140 * The value of the data source name property can be used to do a lookup of
141 * a <code>DataSource</code> object that has been registered with a naming
142 * service. After being retrieved, the <code>DataSource</code> object can be
143 * used to create a connection to the data source that it represents.
144 *
145 * @param name the logical name of the data source for this <code>RowSet</code>
146 * object; may be <code>null</code>
147 * @exception SQLException if a database access error occurs
148 * @see #getDataSourceName
149 */
150 void setDataSourceName(String name) throws SQLException;
151
152 /**
153 * Retrieves the username used to create a database connection for this
154 * <code>RowSet</code> object.
155 * The username property is set at run time before calling the method
156 * <code>execute</code>. It is
157 * not usually part of the serialized state of a <code>RowSet</code> object.
158 *
159 * @return the username property
160 * @see #setUsername
161 */
162 String getUsername();
163
164 /**
165 * Sets the username property for this <code>RowSet</code> object to the
166 * given <code>String</code>.
167 *
168 * @param name a user name
169 * @exception SQLException if a database access error occurs
170 * @see #getUsername
171 */
172 void setUsername(String name) throws SQLException;
173
174 /**
175 * Retrieves the password used to create a database connection.
176 * The password property is set at run time before calling the method
177 * <code>execute</code>. It is not usually part of the serialized state
178 * of a <code>RowSet</code> object.
179 *
180 * @return the password for making a database connection
181 * @see #setPassword
182 */
183 String getPassword();
184
185 /**
186 * Sets the database password for this <code>RowSet</code> object to
187 * the given <code>String</code>.
188 *
189 * @param password the password string
190 * @exception SQLException if a database access error occurs
191 * @see #getPassword
192 */
193 void setPassword(String password) throws SQLException;
194
195 /**
196 * Retrieves the transaction isolation level set for this
197 * <code>RowSet</code> object.
198 *
199 * @return the transaction isolation level; one of
200 * <code>Connection.TRANSACTION_READ_UNCOMMITTED</code>,
201 * <code>Connection.TRANSACTION_READ_COMMITTED</code>,
202 * <code>Connection.TRANSACTION_REPEATABLE_READ</code>, or
203 * <code>Connection.TRANSACTION_SERIALIZABLE</code>
204 * @see #setTransactionIsolation
205 */
206 int getTransactionIsolation();
207
208 /**
209 * Sets the transaction isolation level for this <code>RowSet</code> obejct.
210 *
211 * @param level the transaction isolation level; one of
212 * <code>Connection.TRANSACTION_READ_UNCOMMITTED</code>,
213 * <code>Connection.TRANSACTION_READ_COMMITTED</code>,
214 * <code>Connection.TRANSACTION_REPEATABLE_READ</code>, or
215 * <code>Connection.TRANSACTION_SERIALIZABLE</code>
216 * @exception SQLException if a database access error occurs
217 * @see #getTransactionIsolation
218 */
219 void setTransactionIsolation(int level) throws SQLException;
220
221 /**
222 * Retrieves the <code>Map</code> object associated with this
223 * <code>RowSet</code> object, which specifies the custom mapping
224 * of SQL user-defined types, if any. The default is for the
225 * type map to be empty.
226 *
227 * @return a <code>java.util.Map</code> object containing the names of
228 * SQL user-defined types and the Java classes to which they are
229 * to be mapped
230 *
231 * @exception SQLException if a database access error occurs
232 * @see #setTypeMap
233 */
234 java.util.Map<String,Class<?>> getTypeMap() throws SQLException;
235
236 /**
237 * Installs the given <code>java.util.Map</code> object as the default
238 * type map for this <code>RowSet</code> object. This type map will be
239 * used unless another type map is supplied as a method parameter.
240 *
241 * @param map a <code>java.util.Map</code> object containing the names of
242 * SQL user-defined types and the Java classes to which they are
243 * to be mapped
244 * @exception SQLException if a database access error occurs
245 * @see #getTypeMap
246 */
247 void setTypeMap(java.util.Map<String,Class<?>> map) throws SQLException;
248
249 //-----------------------------------------------------------------------
250 // The following properties may be used to create a Statement.
251 //-----------------------------------------------------------------------
252
253 /**
254 * Retrieves this <code>RowSet</code> object's command property.
255 *
256 * The command property contains a command string, which must be an SQL
257 * query, that can be executed to fill the rowset with data.
258 * The default value is <code>null</code>.
259 *
260 * @return the command string; may be <code>null</code>
261 * @see #setCommand
262 */
263 String getCommand();
264
265 /**
266 * Sets this <code>RowSet</code> object's command property to the given
267 * SQL query.
268 *
269 * This property is optional
270 * when a rowset gets its data from a data source that does not support
271 * commands, such as a spreadsheet.
272 *
273 * @param cmd the SQL query that will be used to get the data for this
274 * <code>RowSet</code> object; may be <code>null</code>
275 * @exception SQLException if a database access error occurs
276 * @see #getCommand
277 */
278 void setCommand(String cmd) throws SQLException;
279
280 /**
281 * Retrieves whether this <code>RowSet</code> object is read-only.
282 * If updates are possible, the default is for a rowset to be
283 * updatable.
284 * <P>
285 * Attempts to update a read-only rowset will result in an
286 * <code>SQLException</code> being thrown.
287 *
288 * @return <code>true</code> if this <code>RowSet</code> object is
289 * read-only; <code>false</code> if it is updatable
290 * @see #setReadOnly
291 */
292 boolean isReadOnly();
293
294 /**
295 * Sets whether this <code>RowSet</code> object is read-only to the
296 * given <code>boolean</code>.
297 *
298 * @param value <code>true</code> if read-only; <code>false</code> if
299 * updatable
300 * @exception SQLException if a database access error occurs
301 * @see #isReadOnly
302 */
303 void setReadOnly(boolean value) throws SQLException;
304
305 /**
306 * Retrieves the maximum number of bytes that may be returned
307 * for certain column values.
308 * This limit applies only to <code>BINARY</code>,
309 * <code>VARBINARY</code>, <code>LONGVARBINARYBINARY</code>, <code>CHAR</code>,
310 * <code>VARCHAR</code>, <code>LONGVARCHAR</code>, <code>NCHAR</code>
311 * and <code>NVARCHAR</code> columns.
312 * If the limit is exceeded, the excess data is silently discarded.
313 *
314 * @return the current maximum column size limit; zero means that there
315 * is no limit
316 * @exception SQLException if a database access error occurs
317 * @see #setMaxFieldSize
318 */
319 int getMaxFieldSize() throws SQLException;
320
321 /**
322 * Sets the maximum number of bytes that can be returned for a column
323 * value to the given number of bytes.
324 * This limit applies only to <code>BINARY</code>,
325 * <code>VARBINARY</code>, <code>LONGVARBINARYBINARY</code>, <code>CHAR</code>,
326 * <code>VARCHAR</code>, <code>LONGVARCHAR</code>, <code>NCHAR</code>
327 * and <code>NVARCHAR</code> columns.
328 * If the limit is exceeded, the excess data is silently discarded.
329 * For maximum portability, use values greater than 256.
330 *
331 * @param max the new max column size limit in bytes; zero means unlimited
332 * @exception SQLException if a database access error occurs
333 * @see #getMaxFieldSize
334 */
335 void setMaxFieldSize(int max) throws SQLException;
336
337 /**
338 * Retrieves the maximum number of rows that this <code>RowSet</code>
339 * object can contain.
340 * If the limit is exceeded, the excess rows are silently dropped.
341 *
342 * @return the current maximum number of rows that this <code>RowSet</code>
343 * object can contain; zero means unlimited
344 * @exception SQLException if a database access error occurs
345 * @see #setMaxRows
346 */
347 int getMaxRows() throws SQLException;
348
349 /**
350 * Sets the maximum number of rows that this <code>RowSet</code>
351 * object can contain to the specified number.
352 * If the limit is exceeded, the excess rows are silently dropped.
353 *
354 * @param max the new maximum number of rows; zero means unlimited
355 * @exception SQLException if a database access error occurs
356 * @see #getMaxRows
357 */
358 void setMaxRows(int max) throws SQLException;
359
360 /**
361 * Retrieves whether escape processing is enabled for this
362 * <code>RowSet</code> object.
363 * If escape scanning is enabled, which is the default, the driver will do
364 * escape substitution before sending an SQL statement to the database.
365 *
366 * @return <code>true</code> if escape processing is enabled;
367 * <code>false</code> if it is disabled
368 * @exception SQLException if a database access error occurs
369 * @see #setEscapeProcessing
370 */
371 boolean getEscapeProcessing() throws SQLException;
372
373 /**
374 * Sets escape processing for this <code>RowSet</code> object on or
375 * off. If escape scanning is on (the default), the driver will do
376 * escape substitution before sending an SQL statement to the database.
377 *
378 * @param enable <code>true</code> to enable escape processing;
379 * <code>false</code> to disable it
380 * @exception SQLException if a database access error occurs
381 * @see #getEscapeProcessing
382 */
383 void setEscapeProcessing(boolean enable) throws SQLException;
384
385 /**
386 * Retrieves the maximum number of seconds the driver will wait for
387 * a statement to execute.
388 * If this limit is exceeded, an <code>SQLException</code> is thrown.
389 *
390 * @return the current query timeout limit in seconds; zero means
391 * unlimited
392 * @exception SQLException if a database access error occurs
393 * @see #setQueryTimeout
394 */
395 int getQueryTimeout() throws SQLException;
396
397 /**
398 * Sets the maximum time the driver will wait for
399 * a statement to execute to the given number of seconds.
400 * If this limit is exceeded, an <code>SQLException</code> is thrown.
401 *
402 * @param seconds the new query timeout limit in seconds; zero means
403 * that there is no limit
404 * @exception SQLException if a database access error occurs
405 * @see #getQueryTimeout
406 */
407 void setQueryTimeout(int seconds) throws SQLException;
408
409 /**
410 * Sets the type of this <code>RowSet</code> object to the given type.
411 * This method is used to change the type of a rowset, which is by
412 * default read-only and non-scrollable.
413 *
414 * @param type one of the <code>ResultSet</code> constants specifying a type:
415 * <code>ResultSet.TYPE_FORWARD_ONLY</code>,
416 * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or
417 * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>
418 * @exception SQLException if a database access error occurs
419 * @see java.sql.ResultSet#getType
420 */
421 void setType(int type) throws SQLException;
422
423 /**
424 * Sets the concurrency of this <code>RowSet</code> object to the given
425 * concurrency level. This method is used to change the concurrency level
426 * of a rowset, which is by default <code>ResultSet.CONCUR_READ_ONLY</code>
427 *
428 * @param concurrency one of the <code>ResultSet</code> constants specifying a
429 * concurrency level: <code>ResultSet.CONCUR_READ_ONLY</code> or
430 * <code>ResultSet.CONCUR_UPDATABLE</code>
431 * @exception SQLException if a database access error occurs
432 * @see ResultSet#getConcurrency
433 */
434 void setConcurrency(int concurrency) throws SQLException;
435
436 //-----------------------------------------------------------------------
437 // Parameters
438 //-----------------------------------------------------------------------
439
440 /**
441 * The <code>RowSet</code> setter methods are used to set any input parameters
442 * needed by the <code>RowSet</code> object's command.
443 * Parameters are set at run time, as opposed to design time.
444 */
445
446 /**
447 * Sets the designated parameter in this <code>RowSet</code> object's SQL
448 * command to SQL <code>NULL</code>.
449 *
450 * <P><B>Note:</B> You must specify the parameter's SQL type.
451 *
452 * @param parameterIndex the first parameter is 1, the second is 2, ...
453 * @param sqlType a SQL type code defined by <code>java.sql.Types</code>
454 * @exception SQLException if a database access error occurs
455 */
456 void setNull(int parameterIndex, int sqlType) throws SQLException;
457
458 /**
459 * Sets the designated parameter to SQL <code>NULL</code>.
460 *
461 * <P><B>Note:</B> You must specify the parameter's SQL type.
462 *
463 * @param parameterName the name of the parameter
464 * @param sqlType the SQL type code defined in <code>java.sql.Types</code>
465 * @exception SQLException if a database access error occurs or
466 * this method is called on a closed <code>CallableStatement</code>
467 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
468 * this method
469 * @since 1.4
470 */
471 void setNull(String parameterName, int sqlType) throws SQLException;
472
473 /**
474 * Sets the designated parameter in this <code>RowSet</code> object's SQL
475 * command to SQL <code>NULL</code>. This version of the method <code>setNull</code>
476 * should be used for SQL user-defined types (UDTs) and <code>REF</code> type
477 * parameters. Examples of UDTs include: <code>STRUCT</code>, <code>DISTINCT</code>,
478 * <code>JAVA_OBJECT</code>, and named array types.
479 *
480 * <P><B>Note:</B> To be portable, applications must give the
481 * SQL type code and the fully qualified SQL type name when specifying
482 * a NULL UDT or <code>REF</code> parameter. In the case of a UDT,
483 * the name is the type name of the parameter itself. For a <code>REF</code>
484 * parameter, the name is the type name of the referenced type. If
485 * a JDBC driver does not need the type code or type name information,
486 * it may ignore it.
487 *
488 * Although it is intended for UDT and <code>REF</code> parameters,
489 * this method may be used to set a null parameter of any JDBC type.
490 * If the parameter does not have a user-defined or <code>REF</code> type,
491 * the typeName parameter is ignored.
492 *
493 *
494 * @param paramIndex the first parameter is 1, the second is 2, ...
495 * @param sqlType a value from <code>java.sql.Types</code>
496 * @param typeName the fully qualified name of an SQL UDT or the type
497 * name of the SQL structured type being referenced by a <code>REF</code>
498 * type; ignored if the parameter is not a UDT or <code>REF</code> type
499 * @exception SQLException if a database access error occurs
500 */
501 void setNull (int paramIndex, int sqlType, String typeName)
502 throws SQLException;
503
504 /**
505 * Sets the designated parameter to SQL <code>NULL</code>.
506 * This version of the method <code>setNull</code> should
507 * be used for user-defined types and REF type parameters. Examples
508 * of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, and
509 * named array types.
510 *
511 * <P><B>Note:</B> To be portable, applications must give the
512 * SQL type code and the fully-qualified SQL type name when specifying
513 * a NULL user-defined or REF parameter. In the case of a user-defined type
514 * the name is the type name of the parameter itself. For a REF
515 * parameter, the name is the type name of the referenced type. If
516 * a JDBC driver does not need the type code or type name information,
517 * it may ignore it.
518 *
519 * Although it is intended for user-defined and Ref parameters,
520 * this method may be used to set a null parameter of any JDBC type.
521 * If the parameter does not have a user-defined or REF type, the given
522 * typeName is ignored.
523 *
524 *
525 * @param parameterName the name of the parameter
526 * @param sqlType a value from <code>java.sql.Types</code>
527 * @param typeName the fully-qualified name of an SQL user-defined type;
528 * ignored if the parameter is not a user-defined type or
529 * SQL <code>REF</code> value
530 * @exception SQLException if a database access error occurs or
531 * this method is called on a closed <code>CallableStatement</code>
532 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
533 * this method
534 * @since 1.4
535 */
536 void setNull (String parameterName, int sqlType, String typeName)
537 throws SQLException;
538
539 /**
540 * Sets the designated parameter in this <code>RowSet</code> object's command
541 * to the given Java <code>boolean</code> value. The driver converts this to
542 * an SQL <code>BIT</code> value before sending it to the database.
543 *
544 * @param parameterIndex the first parameter is 1, the second is 2, ...
545 * @param x the parameter value
546 * @exception SQLException if a database access error occurs
547 */
548 void setBoolean(int parameterIndex, boolean x) throws SQLException;
549
550 /**
551 * Sets the designated parameter to the given Java <code>boolean</code> value.
552 * The driver converts this
553 * to an SQL <code>BIT</code> or <code>BOOLEAN</code> value when it sends it to the database.
554 *
555 * @param parameterName the name of the parameter
556 * @param x the parameter value
557 * @exception SQLException if a database access error occurs or
558 * this method is called on a closed <code>CallableStatement</code>
559 * @see #getBoolean
560 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
561 * this method
562 * @since 1.4
563 */
564 void setBoolean(String parameterName, boolean x) throws SQLException;
565
566 /**
567 * Sets the designated parameter in this <code>RowSet</code> object's command
568 * to the given Java <code>byte</code> value. The driver converts this to
569 * an SQL <code>TINYINT</code> value before sending it to the database.
570 *
571 * @param parameterIndex the first parameter is 1, the second is 2, ...
572 * @param x the parameter value
573 * @exception SQLException if a database access error occurs
574 */
575 void setByte(int parameterIndex, byte x) throws SQLException;
576
577 /**
578 * Sets the designated parameter to the given Java <code>byte</code> value.
579 * The driver converts this
580 * to an SQL <code>TINYINT</code> value when it sends it to the database.
581 *
582 * @param parameterName the name of the parameter
583 * @param x the parameter value
584 * @exception SQLException if a database access error occurs or
585 * this method is called on a closed <code>CallableStatement</code>
586 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
587 * this method
588 * @see #getByte
589 * @since 1.4
590 */
591 void setByte(String parameterName, byte x) throws SQLException;
592
593 /**
594 * Sets the designated parameter in this <code>RowSet</code> object's command
595 * to the given Java <code>short</code> value. The driver converts this to
596 * an SQL <code>SMALLINT</code> value before sending it to the database.
597 *
598 * @param parameterIndex the first parameter is 1, the second is 2, ...
599 * @param x the parameter value
600 * @exception SQLException if a database access error occurs
601 */
602 void setShort(int parameterIndex, short x) throws SQLException;
603
604 /**
605 * Sets the designated parameter to the given Java <code>short</code> value.
606 * The driver converts this
607 * to an SQL <code>SMALLINT</code> value when it sends it to the database.
608 *
609 * @param parameterName the name of the parameter
610 * @param x the parameter value
611 * @exception SQLException if a database access error occurs or
612 * this method is called on a closed <code>CallableStatement</code>
613 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
614 * this method
615 * @see #getShort
616 * @since 1.4
617 */
618 void setShort(String parameterName, short x) throws SQLException;
619
620 /**
621 * Sets the designated parameter in this <code>RowSet</code> object's command
622 * to the given Java <code>int</code> value. The driver converts this to
623 * an SQL <code>INTEGER</code> value before sending it to the database.
624 *
625 * @param parameterIndex the first parameter is 1, the second is 2, ...
626 * @param x the parameter value
627 * @exception SQLException if a database access error occurs
628 */
629 void setInt(int parameterIndex, int x) throws SQLException;
630
631 /**
632 * Sets the designated parameter to the given Java <code>int</code> value.
633 * The driver converts this
634 * to an SQL <code>INTEGER</code> value when it sends it to the database.
635 *
636 * @param parameterName the name of the parameter
637 * @param x the parameter value
638 * @exception SQLException if a database access error occurs or
639 * this method is called on a closed <code>CallableStatement</code>
640 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
641 * this method
642 * @see #getInt
643 * @since 1.4
644 */
645 void setInt(String parameterName, int x) throws SQLException;
646
647 /**
648 * Sets the designated parameter in this <code>RowSet</code> object's command
649 * to the given Java <code>long</code> value. The driver converts this to
650 * an SQL <code>BIGINT</code> value before sending it to the database.
651 *
652 * @param parameterIndex the first parameter is 1, the second is 2, ...
653 * @param x the parameter value
654 * @exception SQLException if a database access error occurs
655 */
656 void setLong(int parameterIndex, long x) throws SQLException;
657
658 /**
659 * Sets the designated parameter to the given Java <code>long</code> value.
660 * The driver converts this
661 * to an SQL <code>BIGINT</code> value when it sends it to the database.
662 *
663 * @param parameterName the name of the parameter
664 * @param x the parameter value
665 * @exception SQLException if a database access error occurs or
666 * this method is called on a closed <code>CallableStatement</code>
667 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
668 * this method
669 * @see #getLong
670 * @since 1.4
671 */
672 void setLong(String parameterName, long x) throws SQLException;
673
674 /**
675 * Sets the designated parameter in this <code>RowSet</code> object's command
676 * to the given Java <code>float</code> value. The driver converts this to
677 * an SQL <code>REAL</code> value before sending it to the database.
678 *
679 * @param parameterIndex the first parameter is 1, the second is 2, ...
680 * @param x the parameter value
681 * @exception SQLException if a database access error occurs
682 */
683 void setFloat(int parameterIndex, float x) throws SQLException;
684
685 /**
686 * Sets the designated parameter to the given Java <code>float</code> value.
687 * The driver converts this
688 * to an SQL <code>FLOAT</code> value when it sends it to the database.
689 *
690 * @param parameterName the name of the parameter
691 * @param x the parameter value
692 * @exception SQLException if a database access error occurs or
693 * this method is called on a closed <code>CallableStatement</code>
694 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
695 * this method
696 * @see #getFloat
697 * @since 1.4
698 */
699 void setFloat(String parameterName, float x) throws SQLException;
700
701 /**
702 * Sets the designated parameter in this <code>RowSet</code> object's command
703 * to the given Java <code>double</code> value. The driver converts this to
704 * an SQL <code>DOUBLE</code> value before sending it to the database.
705 *
706 * @param parameterIndex the first parameter is 1, the second is 2, ...
707 * @param x the parameter value
708 * @exception SQLException if a database access error occurs
709 */
710 void setDouble(int parameterIndex, double x) throws SQLException;
711
712 /**
713 * Sets the designated parameter to the given Java <code>double</code> value.
714 * The driver converts this
715 * to an SQL <code>DOUBLE</code> value when it sends it to the database.
716 *
717 * @param parameterName the name of the parameter
718 * @param x the parameter value
719 * @exception SQLException if a database access error occurs or
720 * this method is called on a closed <code>CallableStatement</code>
721 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
722 * this method
723 * @see #getDouble
724 * @since 1.4
725 */
726 void setDouble(String parameterName, double x) throws SQLException;
727
728 /**
729 * Sets the designated parameter in this <code>RowSet</code> object's command
730 * to the given <code>java.math.BigDeciaml</code> value.
731 * The driver converts this to
732 * an SQL <code>NUMERIC</code> value before sending it to the database.
733 *
734 * @param parameterIndex the first parameter is 1, the second is 2, ...
735 * @param x the parameter value
736 * @exception SQLException if a database access error occurs
737 */
738 void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException;
739
740 /**
741 * Sets the designated parameter to the given
742 * <code>java.math.BigDecimal</code> value.
743 * The driver converts this to an SQL <code>NUMERIC</code> value when
744 * it sends it to the database.
745 *
746 * @param parameterName the name of the parameter
747 * @param x the parameter value
748 * @exception SQLException if a database access error occurs or
749 * this method is called on a closed <code>CallableStatement</code>
750 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
751 * this method
752 * @see #getBigDecimal
753 * @since 1.4
754 */
755 void setBigDecimal(String parameterName, BigDecimal x) throws SQLException;
756
757 /**
758 * Sets the designated parameter in this <code>RowSet</code> object's command
759 * to the given Java <code>String</code> value. Before sending it to the
760 * database, the driver converts this to an SQL <code>VARCHAR</code> or
761 * <code>LONGVARCHAR</code> value, depending on the argument's size relative
762 * to the driver's limits on <code>VARCHAR</code> values.
763 *
764 * @param parameterIndex the first parameter is 1, the second is 2, ...
765 * @param x the parameter value
766 * @exception SQLException if a database access error occurs
767 */
768 void setString(int parameterIndex, String x) throws SQLException;
769
770 /**
771 * Sets the designated parameter to the given Java <code>String</code> value.
772 * The driver converts this
773 * to an SQL <code>VARCHAR</code> or <code>LONGVARCHAR</code> value
774 * (depending on the argument's
775 * size relative to the driver's limits on <code>VARCHAR</code> values)
776 * when it sends it to the database.
777 *
778 * @param parameterName the name of the parameter
779 * @param x the parameter value
780 * @exception SQLException if a database access error occurs or
781 * this method is called on a closed <code>CallableStatement</code>
782 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
783 * this method
784 * @see #getString
785 * @since 1.4
786 */
787 void setString(String parameterName, String x) throws SQLException;
788
789 /**
790 * Sets the designated parameter in this <code>RowSet</code> object's command
791 * to the given Java array of <code>byte</code> values. Before sending it to the
792 * database, the driver converts this to an SQL <code>VARBINARY</code> or
793 * <code>LONGVARBINARY</code> value, depending on the argument's size relative
794 * to the driver's limits on <code>VARBINARY</code> values.
795 *
796 * @param parameterIndex the first parameter is 1, the second is 2, ...
797 * @param x the parameter value
798 * @exception SQLException if a database access error occurs
799 */
800 void setBytes(int parameterIndex, byte x[]) throws SQLException;
801
802 /**
803 * Sets the designated parameter to the given Java array of bytes.
804 * The driver converts this to an SQL <code>VARBINARY</code> or
805 * <code>LONGVARBINARY</code> (depending on the argument's size relative
806 * to the driver's limits on <code>VARBINARY</code> values) when it sends
807 * it to the database.
808 *
809 * @param parameterName the name of the parameter
810 * @param x the parameter value
811 * @exception SQLException if a database access error occurs or
812 * this method is called on a closed <code>CallableStatement</code>
813 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
814 * this method
815 * @see #getBytes
816 * @since 1.4
817 */
818 void setBytes(String parameterName, byte x[]) throws SQLException;
819
820 /**
821 * Sets the designated parameter in this <code>RowSet</code> object's command
822 * to the given <code>java.sql.Date</code> value. The driver converts this to
823 * an SQL <code>DATE</code> value before sending it to the database, using the
824 * default <code>java.util.Calendar</code> to calculate the date.
825 *
826 * @param parameterIndex the first parameter is 1, the second is 2, ...
827 * @param x the parameter value
828 * @exception SQLException if a database access error occurs
829 */
830 void setDate(int parameterIndex, java.sql.Date x) throws SQLException;
831
832 /**
833 * Sets the designated parameter in this <code>RowSet</code> object's command
834 * to the given <code>java.sql.Time</code> value. The driver converts this to
835 * an SQL <code>TIME</code> value before sending it to the database, using the
836 * default <code>java.util.Calendar</code> to calculate it.
837 *
838 * @param parameterIndex the first parameter is 1, the second is 2, ...
839 * @param x the parameter value
840 * @exception SQLException if a database access error occurs
841 */
842 void setTime(int parameterIndex, java.sql.Time x) throws SQLException;
843
844 /**
845 * Sets the designated parameter in this <code>RowSet</code> object's command
846 * to the given <code>java.sql.Timestamp</code> value. The driver converts this to
847 * an SQL <code>TIMESTAMP</code> value before sending it to the database, using the
848 * default <code>java.util.Calendar</code> to calculate it.
849 *
850 * @param parameterIndex the first parameter is 1, the second is 2, ...
851 * @param x the parameter value
852 * @exception SQLException if a database access error occurs
853 */
854 void setTimestamp(int parameterIndex, java.sql.Timestamp x)
855 throws SQLException;
856
857 /**
858 * Sets the designated parameter to the given <code>java.sql.Timestamp</code> value.
859 * The driver
860 * converts this to an SQL <code>TIMESTAMP</code> value when it sends it to the
861 * database.
862 *
863 * @param parameterName the name of the parameter
864 * @param x the parameter value
865 * @exception SQLException if a database access error occurs or
866 * this method is called on a closed <code>CallableStatement</code>
867 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
868 * this method
869 * @see #getTimestamp
870 * @since 1.4
871 */
872 void setTimestamp(String parameterName, java.sql.Timestamp x)
873 throws SQLException;
874
875 /**
876 * Sets the designated parameter in this <code>RowSet</code> object's command
877 * to the given <code>java.io.InputStream</code> value.
878 * It may be more practical to send a very large ASCII value via a
879 * <code>java.io.InputStream</code> rather than as a <code>LONGVARCHAR</code>
880 * parameter. The driver will read the data from the stream
881 * as needed until it reaches end-of-file.
882 *
883 * <P><B>Note:</B> This stream object can either be a standard
884 * Java stream object or your own subclass that implements the
885 * standard interface.
886 *
887 * @param parameterIndex the first parameter is 1, the second is 2, ...
888 * @param x the Java input stream that contains the ASCII parameter value
889 * @param length the number of bytes in the stream
890 * @exception SQLException if a database access error occurs
891 */
892 void setAsciiStream(int parameterIndex, java.io.InputStream x, int length)
893 throws SQLException;
894
895 /**
896 * Sets the designated parameter to the given input stream, which will have
897 * the specified number of bytes.
898 * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
899 * parameter, it may be more practical to send it via a
900 * <code>java.io.InputStream</code>. Data will be read from the stream
901 * as needed until end-of-file is reached. The JDBC driver will
902 * do any necessary conversion from ASCII to the database char format.
903 *
904 * <P><B>Note:</B> This stream object can either be a standard
905 * Java stream object or your own subclass that implements the
906 * standard interface.
907 *
908 * @param parameterName the name of the parameter
909 * @param x the Java input stream that contains the ASCII parameter value
910 * @param length the number of bytes in the stream
911 * @exception SQLException if a database access error occurs or
912 * this method is called on a closed <code>CallableStatement</code>
913 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
914 * this method
915 * @since 1.4
916 */
917 void setAsciiStream(String parameterName, java.io.InputStream x, int length)
918 throws SQLException;
919
920 /**
921 * Sets the designated parameter in this <code>RowSet</code> object's command
922 * to the given <code>java.io.InputStream</code> value.
923 * It may be more practical to send a very large binary value via a
924 * <code>java.io.InputStream</code> rather than as a <code>LONGVARBINARY</code>
925 * parameter. The driver will read the data from the stream
926 * as needed until it reaches end-of-file.
927 *
928 * <P><B>Note:</B> This stream object can either be a standard
929 * Java stream object or your own subclass that implements the
930 * standard interface.
931 *
932 * @param parameterIndex the first parameter is 1, the second is 2, ...
933 * @param x the java input stream which contains the binary parameter value
934 * @param length the number of bytes in the stream
935 * @exception SQLException if a database access error occurs
936 */
937 void setBinaryStream(int parameterIndex, java.io.InputStream x,
938 int length) throws SQLException;
939
940 /**
941 * Sets the designated parameter to the given input stream, which will have
942 * the specified number of bytes.
943 * When a very large binary value is input to a <code>LONGVARBINARY</code>
944 * parameter, it may be more practical to send it via a
945 * <code>java.io.InputStream</code> object. The data will be read from the stream
946 * as needed until end-of-file is reached.
947 *
948 * <P><B>Note:</B> This stream object can either be a standard
949 * Java stream object or your own subclass that implements the
950 * standard interface.
951 *
952 * @param parameterName the name of the parameter
953 * @param x the java input stream which contains the binary parameter value
954 * @param length the number of bytes in the stream
955 * @exception SQLException if a database access error occurs or
956 * this method is called on a closed <code>CallableStatement</code>
957 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
958 * this method
959 * @since 1.4
960 */
961 void setBinaryStream(String parameterName, java.io.InputStream x,
962 int length) throws SQLException;
963
964 /**
965 * Sets the designated parameter in this <code>RowSet</code> object's command
966 * to the given <code>java.io.Reader</code> value.
967 * It may be more practical to send a very large UNICODE value via a
968 * <code>java.io.Reader</code> rather than as a <code>LONGVARCHAR</code>
969 * parameter. The driver will read the data from the stream
970 * as needed until it reaches end-of-file.
971 *
972 * <P><B>Note:</B> This stream object can either be a standard
973 * Java stream object or your own subclass that implements the
974 * standard interface.
975 *
976 * @param parameterIndex the first parameter is 1, the second is 2, ...
977 * @param reader the <code>Reader</code> object that contains the UNICODE data
978 * to be set
979 * @param length the number of characters in the stream
980 * @exception SQLException if a database access error occurs
981 */
982 void setCharacterStream(int parameterIndex,
983 Reader reader,
984 int length) throws SQLException;
985
986 /**
987 * Sets the designated parameter to the given <code>Reader</code>
988 * object, which is the given number of characters long.
989 * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
990 * parameter, it may be more practical to send it via a
991 * <code>java.io.Reader</code> object. The data will be read from the stream
992 * as needed until end-of-file is reached. The JDBC driver will
993 * do any necessary conversion from UNICODE to the database char format.
994 *
995 * <P><B>Note:</B> This stream object can either be a standard
996 * Java stream object or your own subclass that implements the
997 * standard interface.
998 *
999 * @param parameterName the name of the parameter
1000 * @param reader the <code>java.io.Reader</code> object that
1001 * contains the UNICODE data used as the designated parameter
1002 * @param length the number of characters in the stream
1003 * @exception SQLException if a database access error occurs or
1004 * this method is called on a closed <code>CallableStatement</code>
1005 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1006 * this method
1007 * @since 1.4
1008 */
1009 void setCharacterStream(String parameterName,
1010 java.io.Reader reader,
1011 int length) throws SQLException;
1012
1013 /**
1014 * Sets the designated parameter in this <code>RowSet</code> object's command
1015 * to the given input stream.
1016 * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
1017 * parameter, it may be more practical to send it via a
1018 * <code>java.io.InputStream</code>. Data will be read from the stream
1019 * as needed until end-of-file is reached. The JDBC driver will
1020 * do any necessary conversion from ASCII to the database char format.
1021 *
1022 * <P><B>Note:</B> This stream object can either be a standard
1023 * Java stream object or your own subclass that implements the
1024 * standard interface.
1025 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1026 * it might be more efficient to use a version of
1027 * <code>setAsciiStream</code> which takes a length parameter.
1028 *
1029 * @param parameterIndex the first parameter is 1, the second is 2, ...
1030 * @param x the Java input stream that contains the ASCII parameter value
1031 * @exception SQLException if a database access error occurs or
1032 * this method is called on a closed <code>PreparedStatement</code>
1033 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1034 * @since 1.6
1035 */
1036 void setAsciiStream(int parameterIndex, java.io.InputStream x)
1037 throws SQLException;
1038
1039 /**
1040 * Sets the designated parameter to the given input stream.
1041 * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
1042 * parameter, it may be more practical to send it via a
1043 * <code>java.io.InputStream</code>. Data will be read from the stream
1044 * as needed until end-of-file is reached. The JDBC driver will
1045 * do any necessary conversion from ASCII to the database char format.
1046 *
1047 * <P><B>Note:</B> This stream object can either be a standard
1048 * Java stream object or your own subclass that implements the
1049 * standard interface.
1050 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1051 * it might be more efficient to use a version of
1052 * <code>setAsciiStream</code> which takes a length parameter.
1053 *
1054 * @param parameterName the name of the parameter
1055 * @param x the Java input stream that contains the ASCII parameter value
1056 * @exception SQLException if a database access error occurs or
1057 * this method is called on a closed <code>CallableStatement</code>
1058 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1059 * @since 1.6
1060 */
1061 void setAsciiStream(String parameterName, java.io.InputStream x)
1062 throws SQLException;
1063
1064 /**
1065 * Sets the designated parameter in this <code>RowSet</code> object's command
1066 * to the given input stream.
1067 * When a very large binary value is input to a <code>LONGVARBINARY</code>
1068 * parameter, it may be more practical to send it via a
1069 * <code>java.io.InputStream</code> object. The data will be read from the
1070 * stream as needed until end-of-file is reached.
1071 *
1072 * <P><B>Note:</B> This stream object can either be a standard
1073 * Java stream object or your own subclass that implements the
1074 * standard interface.
1075 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1076 * it might be more efficient to use a version of
1077 * <code>setBinaryStream</code> which takes a length parameter.
1078 *
1079 * @param parameterIndex the first parameter is 1, the second is 2, ...
1080 * @param x the java input stream which contains the binary parameter value
1081 * @exception SQLException if a database access error occurs or
1082 * this method is called on a closed <code>PreparedStatement</code>
1083 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1084 * @since 1.6
1085 */
1086 void setBinaryStream(int parameterIndex, java.io.InputStream x)
1087 throws SQLException;
1088
1089 /**
1090 * Sets the designated parameter to the given input stream.
1091 * When a very large binary value is input to a <code>LONGVARBINARY</code>
1092 * parameter, it may be more practical to send it via a
1093 * <code>java.io.InputStream</code> object. The data will be read from the
1094 * stream as needed until end-of-file is reached.
1095 *
1096 * <P><B>Note:</B> This stream object can either be a standard
1097 * Java stream object or your own subclass that implements the
1098 * standard interface.
1099 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1100 * it might be more efficient to use a version of
1101 * <code>setBinaryStream</code> which takes a length parameter.
1102 *
1103 * @param parameterName the name of the parameter
1104 * @param x the java input stream which contains the binary parameter value
1105 * @exception SQLException if a database access error occurs or
1106 * this method is called on a closed <code>CallableStatement</code>
1107 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1108 * @since 1.6
1109 */
1110 void setBinaryStream(String parameterName, java.io.InputStream x)
1111 throws SQLException;
1112
1113 /**
1114 * Sets the designated parameter in this <code>RowSet</code> object's command
1115 * to the given <code>Reader</code>
1116 * object.
1117 * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
1118 * parameter, it may be more practical to send it via a
1119 * <code>java.io.Reader</code> object. The data will be read from the stream
1120 * as needed until end-of-file is reached. The JDBC driver will
1121 * do any necessary conversion from UNICODE to the database char format.
1122 *
1123 * <P><B>Note:</B> This stream object can either be a standard
1124 * Java stream object or your own subclass that implements the
1125 * standard interface.
1126 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1127 * it might be more efficient to use a version of
1128 * <code>setCharacterStream</code> which takes a length parameter.
1129 *
1130 * @param parameterIndex the first parameter is 1, the second is 2, ...
1131 * @param reader the <code>java.io.Reader</code> object that contains the
1132 * Unicode data
1133 * @exception SQLException if a database access error occurs or
1134 * this method is called on a closed <code>PreparedStatement</code>
1135 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1136 * @since 1.6
1137 */
1138 void setCharacterStream(int parameterIndex,
1139 java.io.Reader reader) throws SQLException;
1140
1141 /**
1142 * Sets the designated parameter to the given <code>Reader</code>
1143 * object.
1144 * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
1145 * parameter, it may be more practical to send it via a
1146 * <code>java.io.Reader</code> object. The data will be read from the stream
1147 * as needed until end-of-file is reached. The JDBC driver will
1148 * do any necessary conversion from UNICODE to the database char format.
1149 *
1150 * <P><B>Note:</B> This stream object can either be a standard
1151 * Java stream object or your own subclass that implements the
1152 * standard interface.
1153 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1154 * it might be more efficient to use a version of
1155 * <code>setCharacterStream</code> which takes a length parameter.
1156 *
1157 * @param parameterName the name of the parameter
1158 * @param reader the <code>java.io.Reader</code> object that contains the
1159 * Unicode data
1160 * @exception SQLException if a database access error occurs or
1161 * this method is called on a closed <code>CallableStatement</code>
1162 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1163 * @since 1.6
1164 */
1165 void setCharacterStream(String parameterName,
1166 java.io.Reader reader) throws SQLException;
1167
1168 /**
1169 * Sets the designated parameter in this <code>RowSet</code> object's command
1170 * to a <code>Reader</code> object. The
1171 * <code>Reader</code> reads the data till end-of-file is reached. The
1172 * driver does the necessary conversion from Java character format to
1173 * the national character set in the database.
1174
1175 * <P><B>Note:</B> This stream object can either be a standard
1176 * Java stream object or your own subclass that implements the
1177 * standard interface.
1178 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1179 * it might be more efficient to use a version of
1180 * <code>setNCharacterStream</code> which takes a length parameter.
1181 *
1182 * @param parameterIndex of the first parameter is 1, the second is 2, ...
1183 * @param value the parameter value
1184 * @throws SQLException if the driver does not support national
1185 * character sets; if the driver can detect that a data conversion
1186 * error could occur ; if a database access error occurs; or
1187 * this method is called on a closed <code>PreparedStatement</code>
1188 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1189 * @since 1.6
1190 */
1191 void setNCharacterStream(int parameterIndex, Reader value) throws SQLException;
1192
1193
1194
1195 /**
1196 * Sets the designated parameter in this <code>RowSet</code> object's command
1197 * with the given Java <code>Object</code>. For integral values, the
1198 * <code>java.lang</code> equivalent objects should be used (for example,
1199 * an instance of the class <code>Integer</code> for an <code>int</code>).
1200 *
1201 * If the second argument is an <code>InputStream</code> then the stream must contain
1202 * the number of bytes specified by scaleOrLength. If the second argument is a
1203 * <code>Reader</code> then the reader must contain the number of characters specified * by scaleOrLength. If these conditions are not true the driver will generate a
1204 * <code>SQLException</code> when the prepared statement is executed.
1205 *
1206 * <p>The given Java object will be converted to the targetSqlType
1207 * before being sent to the database.
1208 * <P>
1209 * If the object is of a class implementing <code>SQLData</code>,
1210 * the rowset should call the method <code>SQLData.writeSQL</code>
1211 * to write the object to an <code>SQLOutput</code> data stream.
1212 * If, on the other hand, the object is of a class implementing
1213 * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>, <code>NClob</code>,
1214 * <code>Struct</code>, <code>java.net.URL</code>,
1215 * or <code>Array</code>, the driver should pass it to the database as a
1216 * value of the corresponding SQL type.
1217 * <P>
1218 *
1219 * <p>Note that this method may be used to pass datatabase-specific
1220 * abstract data types.
1221 *
1222 * @param parameterIndex the first parameter is 1, the second is 2, ...
1223 * @param x the object containing the input parameter value
1224 * @param targetSqlType the SQL type (as defined in <code>java.sql.Types</code>)
1225 * to be sent to the database. The scale argument may further qualify this
1226 * type.
1227 * @param scaleOrLength for <code>java.sql.Types.DECIMAL</code>
1228 * or <code>java.sql.Types.NUMERIC types</code>,
1229 * this is the number of digits after the decimal point. For
1230 * Java Object types <code>InputStream</code> and <code>Reader</code>,
1231 * this is the length
1232 * of the data in the stream or reader. For all other types,
1233 * this value will be ignored.
1234 * @exception SQLException if a database access error occurs
1235 * @see java.sql.Types
1236 */
1237 void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength)
1238 throws SQLException;
1239
1240 /**
1241 * Sets the value of the designated parameter with the given object. The second
1242 * argument must be an object type; for integral values, the
1243 * <code>java.lang</code> equivalent objects should be used.
1244 *
1245 * <p>The given Java object will be converted to the given targetSqlType
1246 * before being sent to the database.
1247 *
1248 * If the object has a custom mapping (is of a class implementing the
1249 * interface <code>SQLData</code>),
1250 * the JDBC driver should call the method <code>SQLData.writeSQL</code> to write it
1251 * to the SQL data stream.
1252 * If, on the other hand, the object is of a class implementing
1253 * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>, <code>NClob</code>,
1254 * <code>Struct</code>, <code>java.net.URL</code>,
1255 * or <code>Array</code>, the driver should pass it to the database as a
1256 * value of the corresponding SQL type.
1257 * <P>
1258 * Note that this method may be used to pass datatabase-
1259 * specific abstract data types.
1260 *
1261 * @param parameterName the name of the parameter
1262 * @param x the object containing the input parameter value
1263 * @param targetSqlType the SQL type (as defined in java.sql.Types) to be
1264 * sent to the database. The scale argument may further qualify this type.
1265 * @param scale for java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types,
1266 * this is the number of digits after the decimal point. For all other
1267 * types, this value will be ignored.
1268 * @exception SQLException if a database access error occurs or
1269 * this method is called on a closed <code>CallableStatement</code>
1270 * @exception SQLFeatureNotSupportedException if <code>targetSqlType</code> is
1271 * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
1272 * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
1273 * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
1274 * <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
1275 * or <code>STRUCT</code> data type and the JDBC driver does not support
1276 * this data type
1277 * @see Types
1278 * @see #getObject
1279 * @since 1.4
1280 */
1281 void setObject(String parameterName, Object x, int targetSqlType, int scale)
1282 throws SQLException;
1283
1284 /**
1285 * Sets the designated parameter in this <code>RowSet</code> object's command
1286 * with a Java <code>Object</code>. For integral values, the
1287 * <code>java.lang</code> equivalent objects should be used.
1288 * This method is like <code>setObject</code> above, but the scale used is the scale
1289 * of the second parameter. Scalar values have a scale of zero. Literal
1290 * values have the scale present in the literal.
1291 * <P>
1292 * Even though it is supported, it is not recommended that this method
1293 * be called with floating point input values.
1294 *
1295 * @param parameterIndex the first parameter is 1, the second is 2, ...
1296 * @param x the object containing the input parameter value
1297 * @param targetSqlType the SQL type (as defined in <code>java.sql.Types</code>)
1298 * to be sent to the database
1299 * @exception SQLException if a database access error occurs
1300 */
1301 void setObject(int parameterIndex, Object x,
1302 int targetSqlType) throws SQLException;
1303
1304 /**
1305 * Sets the value of the designated parameter with the given object.
1306 * This method is like the method <code>setObject</code>
1307 * above, except that it assumes a scale of zero.
1308 *
1309 * @param parameterName the name of the parameter
1310 * @param x the object containing the input parameter value
1311 * @param targetSqlType the SQL type (as defined in java.sql.Types) to be
1312 * sent to the database
1313 * @exception SQLException if a database access error occurs or
1314 * this method is called on a closed <code>CallableStatement</code>
1315 * @exception SQLFeatureNotSupportedException if <code>targetSqlType</code> is
1316 * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
1317 * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
1318 * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
1319 * <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
1320 * or <code>STRUCT</code> data type and the JDBC driver does not support
1321 * this data type
1322 * @see #getObject
1323 * @since 1.4
1324 */
1325 void setObject(String parameterName, Object x, int targetSqlType)
1326 throws SQLException;
1327
1328 /**
1329 * Sets the value of the designated parameter with the given object.
1330 * The second parameter must be of type <code>Object</code>; therefore, the
1331 * <code>java.lang</code> equivalent objects should be used for built-in types.
1332 *
1333 * <p>The JDBC specification specifies a standard mapping from
1334 * Java <code>Object</code> types to SQL types. The given argument
1335 * will be converted to the corresponding SQL type before being
1336 * sent to the database.
1337 *
1338 * <p>Note that this method may be used to pass datatabase-
1339 * specific abstract data types, by using a driver-specific Java
1340 * type.
1341 *
1342 * If the object is of a class implementing the interface <code>SQLData</code>,
1343 * the JDBC driver should call the method <code>SQLData.writeSQL</code>
1344 * to write it to the SQL data stream.
1345 * If, on the other hand, the object is of a class implementing
1346 * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>, <code>NClob</code>,
1347 * <code>Struct</code>, <code>java.net.URL</code>,
1348 * or <code>Array</code>, the driver should pass it to the database as a
1349 * value of the corresponding SQL type.
1350 * <P>
1351 * This method throws an exception if there is an ambiguity, for example, if the
1352 * object is of a class implementing more than one of the interfaces named above.
1353 *
1354 * @param parameterName the name of the parameter
1355 * @param x the object containing the input parameter value
1356 * @exception SQLException if a database access error occurs,
1357 * this method is called on a closed <code>CallableStatement</code> or if the given
1358 * <code>Object</code> parameter is ambiguous
1359 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1360 * this method
1361 * @see #getObject
1362 * @since 1.4
1363 */
1364 void setObject(String parameterName, Object x) throws SQLException;
1365
1366 /**
1367 * Sets the designated parameter in this <code>RowSet</code> object's command
1368 * with a Java <code>Object</code>. For integral values, the
1369 * <code>java.lang</code> equivalent objects should be used.
1370 *
1371 * <p>The JDBC specification provides a standard mapping from
1372 * Java Object types to SQL types. The driver will convert the
1373 * given Java object to its standard SQL mapping before sending it
1374 * to the database.
1375 *
1376 * <p>Note that this method may be used to pass datatabase-specific
1377 * abstract data types by using a driver-specific Java type.
1378 *
1379 * If the object is of a class implementing <code>SQLData</code>,
1380 * the rowset should call the method <code>SQLData.writeSQL</code>
1381 * to write the object to an <code>SQLOutput</code> data stream.
1382 * If, on the other hand, the object is of a class implementing
1383 * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>, <code>NClob</code>,
1384 * <code>Struct</code>, <code>java.net.URL</code>,
1385 * or <code>Array</code>, the driver should pass it to the database as a
1386 * value of the corresponding SQL type.
1387 * <P>
1388 * <P>
1389 * An exception is thrown if there is an ambiguity, for example, if the
1390 * object is of a class implementing more than one of these interfaces.
1391 *
1392 * @param parameterIndex The first parameter is 1, the second is 2, ...
1393 * @param x The object containing the input parameter value
1394 * @exception SQLException if a database access error occurs
1395 */
1396 void setObject(int parameterIndex, Object x) throws SQLException;
1397
1398
1399 /**
1400 * Sets the designated parameter in this <code>RowSet</code> object's command
1401 * with the given <code>Ref</code> value. The driver will convert this
1402 * to the appropriate <code>REF(&lt;structured-type&gt;)</code> value.
1403 *
1404 * @param i the first parameter is 1, the second is 2, ...
1405 * @param x an object representing data of an SQL <code>REF</code> type
1406 * @exception SQLException if a database access error occurs
1407 */
1408 void setRef (int i, Ref x) throws SQLException;
1409
1410 /**
1411 * Sets the designated parameter in this <code>RowSet</code> object's command
1412 * with the given <code>Blob</code> value. The driver will convert this
1413 * to the <code>BLOB</code> value that the <code>Blob</code> object
1414 * represents before sending it to the database.
1415 *
1416 * @param i the first parameter is 1, the second is 2, ...
1417 * @param x an object representing a BLOB
1418 * @exception SQLException if a database access error occurs
1419 */
1420 void setBlob (int i, Blob x) throws SQLException;
1421
1422 /**
1423 * Sets the designated parameter to a <code>InputStream</code> object. The inputstream must contain the number
1424 * of characters specified by length otherwise a <code>SQLException</code> will be
1425 * generated when the <code>PreparedStatement</code> is executed.
1426 * This method differs from the <code>setBinaryStream (int, InputStream, int)</code>
1427 * method because it informs the driver that the parameter value should be
1428 * sent to the server as a <code>BLOB</code>. When the <code>setBinaryStream</code> method is used,
1429 * the driver may have to do extra work to determine whether the parameter
1430 * data should be sent to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
1431 * @param parameterIndex index of the first parameter is 1,
1432 * the second is 2, ...
1433 * @param inputStream An object that contains the data to set the parameter
1434 * value to.
1435 * @param length the number of bytes in the parameter data.
1436 * @throws SQLException if a database access error occurs,
1437 * this method is called on a closed <code>PreparedStatement</code>,
1438 * if parameterIndex does not correspond
1439 * to a parameter marker in the SQL statement, if the length specified
1440 * is less than zero or if the number of bytes in the inputstream does not match
1441 * the specfied length.
1442 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1443 *
1444 * @since 1.6
1445 */
1446 void setBlob(int parameterIndex, InputStream inputStream, long length)
1447 throws SQLException;
1448
1449 /**
1450 * Sets the designated parameter to a <code>InputStream</code> object.
1451 * This method differs from the <code>setBinaryStream (int, InputStream)</code>
1452 * method because it informs the driver that the parameter value should be
1453 * sent to the server as a <code>BLOB</code>. When the <code>setBinaryStream</code> method is used,
1454 * the driver may have to do extra work to determine whether the parameter
1455 * data should be sent to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
1456 *
1457 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1458 * it might be more efficient to use a version of
1459 * <code>setBlob</code> which takes a length parameter.
1460 *
1461 * @param parameterIndex index of the first parameter is 1,
1462 * the second is 2, ...
1463 * @param inputStream An object that contains the data to set the parameter
1464 * value to.
1465 * @throws SQLException if a database access error occurs,
1466 * this method is called on a closed <code>PreparedStatement</code> or
1467 * if parameterIndex does not correspond
1468 * to a parameter marker in the SQL statement,
1469 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1470 *
1471 * @since 1.6
1472 */
1473 void setBlob(int parameterIndex, InputStream inputStream)
1474 throws SQLException;
1475
1476 /**
1477 * Sets the designated parameter to a <code>InputStream</code> object. The <code>inputstream</code> must contain the number
1478 * of characters specified by length, otherwise a <code>SQLException</code> will be
1479 * generated when the <code>CallableStatement</code> is executed.
1480 * This method differs from the <code>setBinaryStream (int, InputStream, int)</code>
1481 * method because it informs the driver that the parameter value should be
1482 * sent to the server as a <code>BLOB</code>. When the <code>setBinaryStream</code> method is used,
1483 * the driver may have to do extra work to determine whether the parameter
1484 * data should be sent to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
1485 *
1486 * @param parameterName the name of the parameter to be set
1487 * the second is 2, ...
1488 *
1489 * @param inputStream An object that contains the data to set the parameter
1490 * value to.
1491 * @param length the number of bytes in the parameter data.
1492 * @throws SQLException if parameterIndex does not correspond
1493 * to a parameter marker in the SQL statement, or if the length specified
1494 * is less than zero; if the number of bytes in the inputstream does not match
1495 * the specfied length; if a database access error occurs or
1496 * this method is called on a closed <code>CallableStatement</code>
1497 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1498 * this method
1499 *
1500 * @since 1.6
1501 */
1502 void setBlob(String parameterName, InputStream inputStream, long length)
1503 throws SQLException;
1504
1505 /**
1506 * Sets the designated parameter to the given <code>java.sql.Blob</code> object.
1507 * The driver converts this to an SQL <code>BLOB</code> value when it
1508 * sends it to the database.
1509 *
1510 * @param parameterName the name of the parameter
1511 * @param x a <code>Blob</code> object that maps an SQL <code>BLOB</code> value
1512 * @exception SQLException if a database access error occurs or
1513 * this method is called on a closed <code>CallableStatement</code>
1514 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1515 * this method
1516 * @since 1.6
1517 */
1518 void setBlob (String parameterName, Blob x) throws SQLException;
1519
1520 /**
1521 * Sets the designated parameter to a <code>InputStream</code> object.
1522 * This method differs from the <code>setBinaryStream (int, InputStream)</code>
1523 * method because it informs the driver that the parameter value should be
1524 * sent to the server as a <code>BLOB</code>. When the <code>setBinaryStream</code> method is used,
1525 * the driver may have to do extra work to determine whether the parameter
1526 * data should be send to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
1527 *
1528 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1529 * it might be more efficient to use a version of
1530 * <code>setBlob</code> which takes a length parameter.
1531 *
1532 * @param parameterName the name of the parameter
1533 * @param inputStream An object that contains the data to set the parameter
1534 * value to.
1535 * @throws SQLException if a database access error occurs or
1536 * this method is called on a closed <code>CallableStatement</code>
1537 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1538 *
1539 * @since 1.6
1540 */
1541 void setBlob(String parameterName, InputStream inputStream)
1542 throws SQLException;
1543
1544 /**
1545 * Sets the designated parameter in this <code>RowSet</code> object's command
1546 * with the given <code>Clob</code> value. The driver will convert this
1547 * to the <code>CLOB</code> value that the <code>Clob</code> object
1548 * represents before sending it to the database.
1549 *
1550 * @param i the first parameter is 1, the second is 2, ...
1551 * @param x an object representing a CLOB
1552 * @exception SQLException if a database access error occurs
1553 */
1554 void setClob (int i, Clob x) throws SQLException;
1555
1556 /**
1557 * Sets the designated parameter to a <code>Reader</code> object. The reader must contain the number
1558 * of characters specified by length otherwise a <code>SQLException</code> will be
1559 * generated when the <code>PreparedStatement</code> is executed.
1560 *This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
1561 * because it informs the driver that the parameter value should be sent to
1562 * the server as a <code>CLOB</code>. When the <code>setCharacterStream</code> method is used, the
1563 * driver may have to do extra work to determine whether the parameter
1564 * data should be sent to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
1565 * @param parameterIndex index of the first parameter is 1, the second is 2, ...
1566 * @param reader An object that contains the data to set the parameter value to.
1567 * @param length the number of characters in the parameter data.
1568 * @throws SQLException if a database access error occurs, this method is called on
1569 * a closed <code>PreparedStatement</code>, if parameterIndex does not correspond to a parameter
1570 * marker in the SQL statement, or if the length specified is less than zero.
1571 *
1572 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1573 * @since 1.6
1574 */
1575 void setClob(int parameterIndex, Reader reader, long length)
1576 throws SQLException;
1577
1578 /**
1579 * Sets the designated parameter to a <code>Reader</code> object.
1580 * This method differs from the <code>setCharacterStream (int, Reader)</code> method
1581 * because it informs the driver that the parameter value should be sent to
1582 * the server as a <code>CLOB</code>. When the <code>setCharacterStream</code> method is used, the
1583 * driver may have to do extra work to determine whether the parameter
1584 * data should be sent to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
1585 *
1586 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1587 * it might be more efficient to use a version of
1588 * <code>setClob</code> which takes a length parameter.
1589 *
1590 * @param parameterIndex index of the first parameter is 1, the second is 2, ...
1591 * @param reader An object that contains the data to set the parameter value to.
1592 * @throws SQLException if a database access error occurs, this method is called on
1593 * a closed <code>PreparedStatement</code>or if parameterIndex does not correspond to a parameter
1594 * marker in the SQL statement
1595 *
1596 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1597 * @since 1.6
1598 */
1599 void setClob(int parameterIndex, Reader reader)
1600 throws SQLException;
1601
1602 /**
1603 * Sets the designated parameter to a <code>Reader</code> object. The <code>reader</code> must contain the number
1604 * of characters specified by length otherwise a <code>SQLException</code> will be
1605 * generated when the <code>CallableStatement</code> is executed.
1606 * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
1607 * because it informs the driver that the parameter value should be sent to
1608 * the server as a <code>CLOB</code>. When the <code>setCharacterStream</code> method is used, the
1609 * driver may have to do extra work to determine whether the parameter
1610 * data should be send to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
1611 * @param parameterName the name of the parameter to be set
1612 * @param reader An object that contains the data to set the parameter value to.
1613 * @param length the number of characters in the parameter data.
1614 * @throws SQLException if parameterIndex does not correspond to a parameter
1615 * marker in the SQL statement; if the length specified is less than zero;
1616 * a database access error occurs or
1617 * this method is called on a closed <code>CallableStatement</code>
1618 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1619 * this method
1620 *
1621 * @since 1.6
1622 */
1623 void setClob(String parameterName, Reader reader, long length)
1624 throws SQLException;
1625
1626 /**
1627 * Sets the designated parameter to the given <code>java.sql.Clob</code> object.
1628 * The driver converts this to an SQL <code>CLOB</code> value when it
1629 * sends it to the database.
1630 *
1631 * @param parameterName the name of the parameter
1632 * @param x a <code>Clob</code> object that maps an SQL <code>CLOB</code> value
1633 * @exception SQLException if a database access error occurs or
1634 * this method is called on a closed <code>CallableStatement</code>
1635 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1636 * this method
1637 * @since 1.6
1638 */
1639 void setClob (String parameterName, Clob x) throws SQLException;
1640
1641 /**
1642 * Sets the designated parameter to a <code>Reader</code> object.
1643 * This method differs from the <code>setCharacterStream (int, Reader)</code> method
1644 * because it informs the driver that the parameter value should be sent to
1645 * the server as a <code>CLOB</code>. When the <code>setCharacterStream</code> method is used, the
1646 * driver may have to do extra work to determine whether the parameter
1647 * data should be send to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
1648 *
1649 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
1650 * it might be more efficient to use a version of
1651 * <code>setClob</code> which takes a length parameter.
1652 *
1653 * @param parameterName the name of the parameter
1654 * @param reader An object that contains the data to set the parameter value to.
1655 * @throws SQLException if a database access error occurs or this method is called on
1656 * a closed <code>CallableStatement</code>
1657 *
1658 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
1659 * @since 1.6
1660 */
1661 void setClob(String parameterName, Reader reader)
1662 throws SQLException;
1663
1664 /**
1665 * Sets the designated parameter in this <code>RowSet</code> object's command
1666 * with the given <code>Array</code> value. The driver will convert this
1667 * to the <code>ARRAY</code> value that the <code>Array</code> object
1668 * represents before sending it to the database.
1669 *
1670 * @param i the first parameter is 1, the second is 2, ...
1671 * @param x an object representing an SQL array
1672 * @exception SQLException if a database access error occurs
1673 */
1674 void setArray (int i, Array x) throws SQLException;
1675
1676 /**
1677 * Sets the designated parameter in this <code>RowSet</code> object's command
1678 * with the given <code>java.sql.Date</code> value. The driver will convert this
1679 * to an SQL <code>DATE</code> value, using the given <code>java.util.Calendar</code>
1680 * object to calculate the date.
1681 *
1682 * @param parameterIndex the first parameter is 1, the second is 2, ...
1683 * @param x the parameter value
1684 * @param cal the <code>java.util.Calendar</code> object to use for calculating the date
1685 * @exception SQLException if a database access error occurs
1686 */
1687 void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
1688 throws SQLException;
1689
1690 /**
1691 * Sets the designated parameter to the given <code>java.sql.Date</code> value
1692 * using the default time zone of the virtual machine that is running
1693 * the application.
1694 * The driver converts this
1695 * to an SQL <code>DATE</code> value when it sends it to the database.
1696 *
1697 * @param parameterName the name of the parameter
1698 * @param x the parameter value
1699 * @exception SQLException if a database access error occurs or
1700 * this method is called on a closed <code>CallableStatement</code>
1701 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1702 * this method
1703 * @see #getDate
1704 * @since 1.4
1705 */
1706 void setDate(String parameterName, java.sql.Date x)
1707 throws SQLException;
1708
1709 /**
1710 * Sets the designated parameter to the given <code>java.sql.Date</code> value,
1711 * using the given <code>Calendar</code> object. The driver uses
1712 * the <code>Calendar</code> object to construct an SQL <code>DATE</code> value,
1713 * which the driver then sends to the database. With a
1714 * a <code>Calendar</code> object, the driver can calculate the date
1715 * taking into account a custom timezone. If no
1716 * <code>Calendar</code> object is specified, the driver uses the default
1717 * timezone, which is that of the virtual machine running the application.
1718 *
1719 * @param parameterName the name of the parameter
1720 * @param x the parameter value
1721 * @param cal the <code>Calendar</code> object the driver will use
1722 * to construct the date
1723 * @exception SQLException if a database access error occurs or
1724 * this method is called on a closed <code>CallableStatement</code>
1725 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1726 * this method
1727 * @see #getDate
1728 * @since 1.4
1729 */
1730 void setDate(String parameterName, java.sql.Date x, Calendar cal)
1731 throws SQLException;
1732
1733 /**
1734 * Sets the designated parameter in this <code>RowSet</code> object's command
1735 * with the given <code>java.sql.Time</code> value. The driver will convert this
1736 * to an SQL <code>TIME</code> value, using the given <code>java.util.Calendar</code>
1737 * object to calculate it, before sending it to the database.
1738 *
1739 * @param parameterIndex the first parameter is 1, the second is 2, ...
1740 * @param x the parameter value
1741 * @param cal the <code>java.util.Calendar</code> object to use for calculating the time
1742 * @exception SQLException if a database access error occurs
1743 */
1744 void setTime(int parameterIndex, java.sql.Time x, Calendar cal)
1745 throws SQLException;
1746
1747 /**
1748 * Sets the designated parameter to the given <code>java.sql.Time</code> value.
1749 * The driver converts this
1750 * to an SQL <code>TIME</code> value when it sends it to the database.
1751 *
1752 * @param parameterName the name of the parameter
1753 * @param x the parameter value
1754 * @exception SQLException if a database access error occurs or
1755 * this method is called on a closed <code>CallableStatement</code>
1756 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1757 * this method
1758 * @see #getTime
1759 * @since 1.4
1760 */
1761 void setTime(String parameterName, java.sql.Time x)
1762 throws SQLException;
1763
1764 /**
1765 * Sets the designated parameter to the given <code>java.sql.Time</code> value,
1766 * using the given <code>Calendar</code> object. The driver uses
1767 * the <code>Calendar</code> object to construct an SQL <code>TIME</code> value,
1768 * which the driver then sends to the database. With a
1769 * a <code>Calendar</code> object, the driver can calculate the time
1770 * taking into account a custom timezone. If no
1771 * <code>Calendar</code> object is specified, the driver uses the default
1772 * timezone, which is that of the virtual machine running the application.
1773 *
1774 * @param parameterName the name of the parameter
1775 * @param x the parameter value
1776 * @param cal the <code>Calendar</code> object the driver will use
1777 * to construct the time
1778 * @exception SQLException if a database access error occurs or
1779 * this method is called on a closed <code>CallableStatement</code>
1780 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1781 * this method
1782 * @see #getTime
1783 * @since 1.4
1784 */
1785 void setTime(String parameterName, java.sql.Time x, Calendar cal)
1786 throws SQLException;
1787
1788 /**
1789 * Sets the designated parameter in this <code>RowSet</code> object's command
1790 * with the given <code>java.sql.Timestamp</code> value. The driver will
1791 * convert this to an SQL <code>TIMESTAMP</code> value, using the given
1792 * <code>java.util.Calendar</code> object to calculate it, before sending it to the
1793 * database.
1794 *
1795 * @param parameterIndex the first parameter is 1, the second is 2, ...
1796 * @param x the parameter value
1797 * @param cal the <code>java.util.Calendar</code> object to use for calculating the
1798 * timestamp
1799 * @exception SQLException if a database access error occurs
1800 */
1801 void setTimestamp(int parameterIndex, java.sql.Timestamp x, Calendar cal)
1802 throws SQLException;
1803
1804 /**
1805 * Sets the designated parameter to the given <code>java.sql.Timestamp</code> value,
1806 * using the given <code>Calendar</code> object. The driver uses
1807 * the <code>Calendar</code> object to construct an SQL <code>TIMESTAMP</code> value,
1808 * which the driver then sends to the database. With a
1809 * a <code>Calendar</code> object, the driver can calculate the timestamp
1810 * taking into account a custom timezone. If no
1811 * <code>Calendar</code> object is specified, the driver uses the default
1812 * timezone, which is that of the virtual machine running the application.
1813 *
1814 * @param parameterName the name of the parameter
1815 * @param x the parameter value
1816 * @param cal the <code>Calendar</code> object the driver will use
1817 * to construct the timestamp
1818 * @exception SQLException if a database access error occurs or
1819 * this method is called on a closed <code>CallableStatement</code>
1820 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
1821 * this method
1822 * @see #getTimestamp
1823 * @since 1.4
1824 */
1825 void setTimestamp(String parameterName, java.sql.Timestamp x, Calendar cal)
1826 throws SQLException;
1827
1828 /**
1829 * Clears the parameters set for this <code>RowSet</code> object's command.
1830 * <P>In general, parameter values remain in force for repeated use of a
1831 * <code>RowSet</code> object. Setting a parameter value automatically clears its
1832 * previous value. However, in some cases it is useful to immediately
1833 * release the resources used by the current parameter values, which can
1834 * be done by calling the method <code>clearParameters</code>.
1835 *
1836 * @exception SQLException if a database access error occurs
1837 */
1838 void clearParameters() throws SQLException;
1839
1840 //---------------------------------------------------------------------
1841 // Reading and writing data
1842 //---------------------------------------------------------------------
1843
1844 /**
1845 * Fills this <code>RowSet</code> object with data.
1846 * <P>
1847 * The <code>execute</code> method may use the following properties
1848 * to create a connection for reading data: url, data source name,
1849 * user name, password, transaction isolation, and type map.
1850 *
1851 * The <code>execute</code> method may use the following properties
1852 * to create a statement to execute a command:
1853 * command, read only, maximum field size,
1854 * maximum rows, escape processing, and query timeout.
1855 * <P>
1856 * If the required properties have not been set, an exception is
1857 * thrown. If this method is successful, the current contents of the rowset are
1858 * discarded and the rowset's metadata is also (re)set. If there are
1859 * outstanding updates, they are ignored.
1860 * <P>
1861 * If this <code>RowSet</code> object does not maintain a continuous connection
1862 * with its source of data, it may use a reader (a <code>RowSetReader</code>
1863 * object) to fill itself with data. In this case, a reader will have been
1864 * registered with this <code>RowSet</code> object, and the method
1865 * <code>execute</code> will call on the reader's <code>readData</code>
1866 * method as part of its implementation.
1867 *
1868 * @exception SQLException if a database access error occurs or any of the
1869 * properties necessary for making a connection and creating
1870 * a statement have not been set
1871 */
1872 void execute() throws SQLException;
1873
1874 //--------------------------------------------------------------------
1875 // Events
1876 //--------------------------------------------------------------------
1877
1878 /**
1879 * Registers the given listener so that it will be notified of events
1880 * that occur on this <code>RowSet</code> object.
1881 *
1882 * @param listener a component that has implemented the <code>RowSetListener</code>
1883 * interface and wants to be notified when events occur on this
1884 * <code>RowSet</code> object
1885 * @see #removeRowSetListener
1886 */
1887 void addRowSetListener(RowSetListener listener);
1888
1889 /**
1890 * Removes the specified listener from the list of components that will be
1891 * notified when an event occurs on this <code>RowSet</code> object.
1892 *
1893 * @param listener a component that has been registered as a listener for this
1894 * <code>RowSet</code> object
1895 * @see #addRowSetListener
1896 */
1897 void removeRowSetListener(RowSetListener listener);
1898
1899 /**
1900 * Sets the designated parameter to the given <code>java.sql.SQLXML</code> object. The driver converts this to an
1901 * SQL <code>XML</code> value when it sends it to the database.
1902 * @param parameterIndex index of the first parameter is 1, the second is 2, ...
1903 * @param xmlObject a <code>SQLXML</code> object that maps an SQL <code>XML</code> value
1904 * @throws SQLException if a database access error occurs, this method
1905 * is called on a closed result set,
1906 * the <code>java.xml.transform.Result</code>,
1907 * <code>Writer</code> or <code>OutputStream</code> has not been closed
1908 * for the <code>SQLXML</code> object or
1909 * if there is an error processing the XML value. The <code>getCause</code> method
1910 * of the exception may provide a more detailed exception, for example, if the
1911 * stream does not contain valid XML.
1912 * @since 1.6
1913 */
1914 void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException;
1915
1916 /**
1917 * Sets the designated parameter to the given <code>java.sql.SQLXML</code> object. The driver converts this to an
1918 * <code>SQL XML</code> value when it sends it to the database.
1919 * @param parameterName the name of the parameter
1920 * @param xmlObject a <code>SQLXML</code> object that maps an <code>SQL XML</code> value
1921 * @throws SQLException if a database access error occurs, this method
1922 * is called on a closed result set,
1923 * the <code>java.xml.transform.Result</code>,
1924 * <code>Writer</code> or <code>OutputStream</code> has not been closed
1925 * for the <code>SQLXML</code> object or
1926 * if there is an error processing the XML value. The <code>getCause</code> method
1927 * of the exception may provide a more detailed exception, for example, if the
1928 * stream does not contain valid XML.
1929 * @since 1.6
1930 */
1931 void setSQLXML(String parameterName, SQLXML xmlObject) throws SQLException;
1932
1933 /**
1934 * Sets the designated parameter to the given <code>java.sql.RowId</code> object. The
1935 * driver converts this to a SQL <code>ROWID</code> value when it sends it
1936 * to the database
1937 *
1938 * @param parameterIndex the first parameter is 1, the second is 2, ...
1939 * @param x the parameter value
1940 * @throws SQLException if a database access error occurs
1941 *
1942 * @since 1.6
1943 */
1944 void setRowId(int parameterIndex, RowId x) throws SQLException;
1945
1946 /**
1947 * Sets the designated parameter to the given <code>java.sql.RowId</code> object. The
1948 * driver converts this to a SQL <code>ROWID</code> when it sends it to the
1949 * database.
1950 *
1951 * @param parameterName the name of the parameter
1952 * @param x the parameter value
1953 * @throws SQLException if a database access error occurs
1954 * @since 1.6
1955 */
1956 void setRowId(String parameterName, RowId x) throws SQLException;
1957
1958 /**
1959 * Sets the designated paramter to the given <code>String</code> object.
1960 * The driver converts this to a SQL <code>NCHAR</code> or
1961 * <code>NVARCHAR</code> or <code>LONGNVARCHAR</code> value
1962 * (depending on the argument's
1963 * size relative to the driver's limits on <code>NVARCHAR</code> values)
1964 * when it sends it to the database.
1965 *
1966 * @param parameterIndex of the first parameter is 1, the second is 2, ...
1967 * @param value the parameter value
1968 * @throws SQLException if the driver does not support national
1969 * character sets; if the driver can detect that a data conversion
1970 * error could occur ; or if a database access error occurs
1971 * @since 1.6
1972 */
1973 void setNString(int parameterIndex, String value) throws SQLException;
1974
1975 /**
1976 * Sets the designated paramter to the given <code>String</code> object.
1977 * The driver converts this to a SQL <code>NCHAR</code> or
1978 * <code>NVARCHAR</code> or <code>LONGNVARCHAR</code>
1979 * @param parameterName the name of the column to be set
1980 * @param value the parameter value
1981 * @throws SQLException if the driver does not support national
1982 * character sets; if the driver can detect that a data conversion
1983 * error could occur; or if a database access error occurs
1984 * @since 1.6
1985 */
1986 public void setNString(String parameterName, String value)
1987 throws SQLException;
1988
1989 /**
1990 * Sets the designated parameter to a <code>Reader</code> object. The
1991 * <code>Reader</code> reads the data till end-of-file is reached. The
1992 * driver does the necessary conversion from Java character format to
1993 * the national character set in the database.
1994 * @param parameterIndex of the first parameter is 1, the second is 2, ...
1995 * @param value the parameter value
1996 * @param length the number of characters in the parameter data.
1997 * @throws SQLException if the driver does not support national
1998 * character sets; if the driver can detect that a data conversion
1999 * error could occur ; or if a database access error occurs
2000 * @since 1.6
2001 */
2002 void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException;
2003
2004 /**
2005 * Sets the designated parameter to a <code>Reader</code> object. The
2006 * <code>Reader</code> reads the data till end-of-file is reached. The
2007 * driver does the necessary conversion from Java character format to
2008 * the national character set in the database.
2009 * @param parameterName the name of the column to be set
2010 * @param value the parameter value
2011 * @param length the number of characters in the parameter data.
2012 * @throws SQLException if the driver does not support national
2013 * character sets; if the driver can detect that a data conversion
2014 * error could occur; or if a database access error occurs
2015 * @since 1.6
2016 */
2017 public void setNCharacterStream(String parameterName, Reader value, long length)
2018 throws SQLException;
2019
2020 /**
2021 * Sets the designated parameter to a <code>Reader</code> object. The
2022 * <code>Reader</code> reads the data till end-of-file is reached. The
2023 * driver does the necessary conversion from Java character format to
2024 * the national character set in the database.
2025
2026 * <P><B>Note:</B> This stream object can either be a standard
2027 * Java stream object or your own subclass that implements the
2028 * standard interface.
2029 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
2030 * it might be more efficient to use a version of
2031 * <code>setNCharacterStream</code> which takes a length parameter.
2032 *
2033 * @param parameterName the name of the parameter
2034 * @param value the parameter value
2035 * @throws SQLException if the driver does not support national
2036 * character sets; if the driver can detect that a data conversion
2037 * error could occur ; if a database access error occurs; or
2038 * this method is called on a closed <code>CallableStatement</code>
2039 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
2040 * @since 1.6
2041 */
2042 void setNCharacterStream(String parameterName, Reader value) throws SQLException;
2043
2044 /**
2045 * Sets the designated parameter to a <code>java.sql.NClob</code> object. The object
2046 * implements the <code>java.sql.NClob</code> interface. This <code>NClob</code>
2047 * object maps to a SQL <code>NCLOB</code>.
2048 * @param parameterName the name of the column to be set
2049 * @param value the parameter value
2050 * @throws SQLException if the driver does not support national
2051 * character sets; if the driver can detect that a data conversion
2052 * error could occur; or if a database access error occurs
2053 * @since 1.6
2054 */
2055 void setNClob(String parameterName, NClob value) throws SQLException;
2056
2057 /**
2058 * Sets the designated parameter to a <code>Reader</code> object. The <code>reader</code> must contain the number
2059 * of characters specified by length otherwise a <code>SQLException</code> will be
2060 * generated when the <code>CallableStatement</code> is executed.
2061 * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
2062 * because it informs the driver that the parameter value should be sent to
2063 * the server as a <code>NCLOB</code>. When the <code>setCharacterStream</code> method is used, the
2064 * driver may have to do extra work to determine whether the parameter
2065 * data should be send to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
2066 *
2067 * @param parameterName the name of the parameter to be set
2068 * @param reader An object that contains the data to set the parameter value to.
2069 * @param length the number of characters in the parameter data.
2070 * @throws SQLException if parameterIndex does not correspond to a parameter
2071 * marker in the SQL statement; if the length specified is less than zero;
2072 * if the driver does not support national
2073 * character sets; if the driver can detect that a data conversion
2074 * error could occur; if a database access error occurs or
2075 * this method is called on a closed <code>CallableStatement</code>
2076 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
2077 * this method
2078 * @since 1.6
2079 */
2080 void setNClob(String parameterName, Reader reader, long length)
2081 throws SQLException;
2082
2083 /**
2084 * Sets the designated parameter to a <code>Reader</code> object.
2085 * This method differs from the <code>setCharacterStream (int, Reader)</code> method
2086 * because it informs the driver that the parameter value should be sent to
2087 * the server as a <code>NCLOB</code>. When the <code>setCharacterStream</code> method is used, the
2088 * driver may have to do extra work to determine whether the parameter
2089 * data should be send to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
2090 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
2091 * it might be more efficient to use a version of
2092 * <code>setNClob</code> which takes a length parameter.
2093 *
2094 * @param parameterName the name of the parameter
2095 * @param reader An object that contains the data to set the parameter value to.
2096 * @throws SQLException if the driver does not support national character sets;
2097 * if the driver can detect that a data conversion
2098 * error could occur; if a database access error occurs or
2099 * this method is called on a closed <code>CallableStatement</code>
2100 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
2101 *
2102 * @since 1.6
2103 */
2104 void setNClob(String parameterName, Reader reader)
2105 throws SQLException;
2106
2107 /**
2108 * Sets the designated parameter to a <code>Reader</code> object. The reader must contain the number
2109 * of characters specified by length otherwise a <code>SQLException</code> will be
2110 * generated when the <code>PreparedStatement</code> is executed.
2111 * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
2112 * because it informs the driver that the parameter value should be sent to
2113 * the server as a <code>NCLOB</code>. When the <code>setCharacterStream</code> method is used, the
2114 * driver may have to do extra work to determine whether the parameter
2115 * data should be sent to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
2116 * @param parameterIndex index of the first parameter is 1, the second is 2, ...
2117 * @param reader An object that contains the data to set the parameter value to.
2118 * @param length the number of characters in the parameter data.
2119 * @throws SQLException if parameterIndex does not correspond to a parameter
2120 * marker in the SQL statement; if the length specified is less than zero;
2121 * if the driver does not support national character sets;
2122 * if the driver can detect that a data conversion
2123 * error could occur; if a database access error occurs or
2124 * this method is called on a closed <code>PreparedStatement</code>
2125 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
2126 *
2127 * @since 1.6
2128 */
2129 void setNClob(int parameterIndex, Reader reader, long length)
2130 throws SQLException;
2131
2132 /**
2133 * Sets the designated parameter to a <code>java.sql.NClob</code> object. The driver converts this to a
2134 * SQL <code>NCLOB</code> value when it sends it to the database.
2135 * @param parameterIndex of the first parameter is 1, the second is 2, ...
2136 * @param value the parameter value
2137 * @throws SQLException if the driver does not support national
2138 * character sets; if the driver can detect that a data conversion
2139 * error could occur ; or if a database access error occurs
2140 * @since 1.6
2141 */
2142 void setNClob(int parameterIndex, NClob value) throws SQLException;
2143
2144 /**
2145 * Sets the designated parameter to a <code>Reader</code> object.
2146 * This method differs from the <code>setCharacterStream (int, Reader)</code> method
2147 * because it informs the driver that the parameter value should be sent to
2148 * the server as a <code>NCLOB</code>. When the <code>setCharacterStream</code> method is used, the
2149 * driver may have to do extra work to determine whether the parameter
2150 * data should be sent to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
2151 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
2152 * it might be more efficient to use a version of
2153 * <code>setNClob</code> which takes a length parameter.
2154 *
2155 * @param parameterIndex index of the first parameter is 1, the second is 2, ...
2156 * @param reader An object that contains the data to set the parameter value to.
2157 * @throws SQLException if parameterIndex does not correspond to a parameter
2158 * marker in the SQL statement;
2159 * if the driver does not support national character sets;
2160 * if the driver can detect that a data conversion
2161 * error could occur; if a database access error occurs or
2162 * this method is called on a closed <code>PreparedStatement</code>
2163 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
2164 *
2165 * @since 1.6
2166 */
2167 void setNClob(int parameterIndex, Reader reader)
2168 throws SQLException;
2169
2170 /**
2171 * Sets the designated parameter to the given <code>java.net.URL</code> value.
2172 * The driver converts this to an SQL <code>DATALINK</code> value
2173 * when it sends it to the database.
2174 *
2175 * @param parameterIndex the first parameter is 1, the second is 2, ...
2176 * @param x the <code>java.net.URL</code> object to be set
2177 * @exception SQLException if a database access error occurs or
2178 * this method is called on a closed <code>PreparedStatement</code>
2179 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this method
2180 * @since 1.4
2181 */
2182 void setURL(int parameterIndex, java.net.URL x) throws SQLException;
2183
2184
2185
2186}