Overview Package Class Use Source Tree Index Deprecated About
GNU Classpath (0.95)
Frames | No Frames

Source for java.sql.DatabaseMetaData

 1:  /* DatabaseMetaData.java -- Information about the database itself.
 2:  Copyright (C) 1999, 2000, 2001, 2002, 2006 Free Software Foundation, Inc.
 3: 
 4: This file is part of GNU Classpath.
 5: 
 6: GNU Classpath is free software; you can redistribute it and/or modify
 7: it under the terms of the GNU General Public License as published by
 8: the Free Software Foundation; either version 2, or (at your option)
 9: any later version.
 10:  
 11: GNU Classpath is distributed in the hope that it will be useful, but
 12: WITHOUT ANY WARRANTY; without even the implied warranty of
 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 14: General Public License for more details.
 15: 
 16: You should have received a copy of the GNU General Public License
 17: along with GNU Classpath; see the file COPYING. If not, write to the
 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 19: 02110-1301 USA.
 20: 
 21: Linking this library statically or dynamically with other modules is
 22: making a combined work based on this library. Thus, the terms and
 23: conditions of the GNU General Public License cover the whole
 24: combination.
 25: 
 26: As a special exception, the copyright holders of this library give you
 27: permission to link this library with independent modules to produce an
 28: executable, regardless of the license terms of these independent
 29: modules, and to copy and distribute the resulting executable under
 30: terms of your choice, provided that you also meet, for each linked
 31: independent module, the terms and conditions of the license of that
 32: module. An independent module is a module which is not derived from
 33: or based on this library. If you modify this library, you may extend
 34: this exception to your version of the library, but you are not
 35: obligated to do so. If you do not wish to do so, delete this
 36: exception statement from your version. */
 37: 
 38:  package java.sql;
 39: 
 40:  public interface DatabaseMetaData 
 41: {
 42:  /**
 43:  * It is unknown whether or not the procedure returns a result.
 44:  */
 45:  int procedureResultUnknown = 0;
 46: 
 47:  /**
 48:  * The procedure does not return a result.
 49:  */
 50:  int procedureNoResult = 1;
 51: 
 52:  /**
 53:  * The procedure returns a result.
 54:  */
 55:  int procedureReturnsResult = 2;
 56: 
 57:  /**
 58:  * The column type is unknown.
 59:  */
 60:  int procedureColumnUnknown = 0;
 61: 
 62:  /**
 63:  * The column type is input.
 64:  */
 65:  int procedureColumnIn = 1;
 66: 
 67:  /**
 68:  * The column type is input/output.
 69:  */
 70:  int procedureColumnInOut = 2;
 71: 
 72:  /**
 73:  * The column type is output
 74:  */
 75:  int procedureColumnOut = 4;
 76: 
 77:  /**
 78:  * The column is used for return values.
 79:  */
 80:  int procedureColumnReturn = 5;
 81: 
 82:  /**
 83:  * The column is used for storing results
 84:  */
 85:  int procedureColumnResult = 3;
 86: 
 87:  /**
 88:  * NULL values are not allowed.
 89:  */
 90:  int procedureNoNulls = 0;
 91: 
 92:  /**
 93:  * NULL values are allowed.
 94:  */
 95:  int procedureNullable = 1;
 96: 
 97:  /**
 98:  * It is unknown whether or not NULL values are allowed.
 99:  */
 100:  int procedureNullableUnknown = 2;
 101: 
 102:  /**
 103:  * The column does not allow NULL
 104:  */
 105:  int columnNoNulls = 0;
 106: 
 107:  /**
 108:  * The column does allow NULL
 109:  */
 110:  int columnNullable = 1;
 111: 
 112:  /**
 113:  * It is unknown whether or not the column allows NULL
 114:  */
 115:  int columnNullableUnknown = 2;
 116: 
 117:  /**
 118:  * The best row's scope is only guaranteed to be valid so long as the
 119:  * row is actually being used.
 120:  */
 121:  int bestRowTemporary = 0;
 122: 
 123:  /**
 124:  * The best row identifier is valid to the end of the transaction.
 125:  */
 126:  int bestRowTransaction = 1;
 127: 
 128:  /**
 129:  * The best row identifier is valid to the end of the session.
 130:  */
 131:  int bestRowSession = 2;
 132: 
 133:  /**
 134:  * The best row may or may not be a pseudo-column.
 135:  */
 136:  int bestRowUnknown = 0;
 137: 
 138:  /**
 139:  * The best row identifier is not a pseudo-column.
 140:  */
 141:  int bestRowNotPseudo = 1;
 142: 
 143:  /**
 144:  * The best row identifier is a pseudo-column.
 145:  */
 146:  int bestRowPseudo = 2;
 147: 
 148:  /**
 149:  * It is unknown whether or not the version column is a pseudo-column.
 150:  */
 151:  int versionColumnUnknown = 0;
 152: 
 153:  /**
 154:  * The version column is not a pseudo-column
 155:  */
 156:  int versionColumnNotPseudo = 1;
 157: 
 158:  /**
 159:  * The version column is a pseudo-column
 160:  */
 161:  int versionColumnPseudo = 2;
 162: 
 163:  /**
 164:  * Foreign key changes are cascaded in updates or deletes.
 165:  */
 166:  int importedKeyCascade = 0;
 167: 
 168:  /**
 169:  * Column may not be updated or deleted in use as a foreign key.
 170:  */
 171:  int importedKeyRestrict = 1;
 172: 
 173:  /**
 174:  * When primary key is updated or deleted, the foreign key is set to NULL.
 175:  */
 176:  int importedKeySetNull = 2;
 177: 
 178:  /**
 179:  * If the primary key is a foreign key, it cannot be udpated or deleted.
 180:  */
 181:  int importedKeyNoAction = 3;
 182: 
 183:  /**
 184:  * If the primary key is updated or deleted, the foreign key is set to
 185:  * a default value.
 186:  */
 187:  int importedKeySetDefault = 4;
 188: 
 189:  /**
 190:  * Wish I knew what this meant.
 191:  */
 192:  int importedKeyInitiallyDeferred = 5;
 193: 
 194:  /**
 195:  * Wish I knew what this meant.
 196:  */
 197:  int importedKeyInitiallyImmediate = 6;
 198: 
 199:  /**
 200:  * Wish I knew what this meant.
 201:  */
 202:  int importedKeyNotDeferrable = 7;
 203: 
 204:  /**
 205:  * A NULL value is not allowed for this data type.
 206:  */
 207:  int typeNoNulls = 0;
 208: 
 209:  /**
 210:  * A NULL value is allowed for this data type.
 211:  */
 212:  int typeNullable = 1;
 213: 
 214:  /**
 215:  * It is unknown whether or not NULL values are allowed for this data type.
 216:  */
 217:  int typeNullableUnknown = 2;
 218: 
 219:  /**
 220:  * Where clauses are not supported for this type.
 221:  */
 222:  int typePredNone = 0;
 223: 
 224:  /**
 225:  * Only "WHERE..LIKE" style WHERE clauses are allowed on this data type.
 226:  */
 227:  int typePredChar = 1;
 228: 
 229:  /**
 230:  * All WHERE clauses except "WHERE..LIKE" style are allowed on this data type.
 231:  */
 232:  int typePredBasic = 2;
 233: 
 234:  /**
 235:  * Any type of WHERE clause is allowed for this data type.
 236:  */
 237:  int typeSearchable = 3;
 238: 
 239:  /**
 240:  * This column contains table statistics.
 241:  */
 242:  short tableIndexStatistic = 0;
 243: 
 244:  /**
 245:  * This table index is clustered.
 246:  */
 247:  short tableIndexClustered = 1;
 248: 
 249:  /**
 250:  * This table index is hashed.
 251:  */
 252:  short tableIndexHashed = 2;
 253: 
 254:  /**
 255:  * This table index is of another type.
 256:  */
 257:  short tableIndexOther = 3;
 258: 
 259:  /**
 260:  * A NULL value is not allowed for this attribute.
 261:  */
 262:  short attributeNoNulls = 0;
 263: 
 264:  /**
 265:  * A NULL value is allowed for this attribute.
 266:  */
 267:  short attributeNullable = 1;
 268: 
 269:  /**
 270:  * It is unknown whether or not NULL values are allowed for this attribute.
 271:  */
 272:  short attributeNullableUnknown = 2;
 273: 
 274:  int sqlStateXOpen = 1;
 275: 
 276:  int sqlStateSQL99 = 2;
 277: 
 278:  /**
 279:  * This method tests whether or not all the procedures returned by
 280:  * the <code>getProcedures</code> method can be called by this user.
 281:  *
 282:  * @return <code>true</code> if all the procedures can be called,
 283:  * <code>false</code> otherwise.
 284:  * @exception SQLException If an error occurs.
 285:  */
 286:  boolean allProceduresAreCallable() throws SQLException;
 287: 
 288:  /**
 289:  * This method tests whether or not all the table returned by the
 290:  * <code>getTables</code> method can be selected by this user.
 291:  *
 292:  * @return <code>true</code> if all the procedures can be called,
 293:  * <code>false</code> otherwise.
 294:  *
 295:  * @exception SQLException If an error occurs.
 296:  */
 297:  boolean allTablesAreSelectable() throws SQLException;
 298: 
 299:  /**
 300:  * This method returns the URL for this database.
 301:  *
 302:  * @return The URL string for this database, or <code>null</code> if it
 303:  * is not known.
 304:  * @exception SQLException If an error occurs.
 305:  */
 306:  String getURL() throws SQLException;
 307: 
 308:  /**
 309:  * This method returns the database username for this connection.
 310:  *
 311:  * @return The database username.
 312:  * @exception SQLException If an error occurs.
 313:  */
 314:  String getUserName() throws SQLException;
 315: 
 316:  /**
 317:  * This method tests whether or not the database is in read only mode.
 318:  *
 319:  * @return <code>true</code> if the database is in read only mode,
 320:  * <code>false</code> otherwise.
 321:  * @exception SQLException If an error occurs.
 322:  */
 323:  boolean isReadOnly() throws SQLException;
 324: 
 325:  /**
 326:  * This method tests whether or not NULL's sort as high values.
 327:  *
 328:  * @return <code>true</code> if NULL's sort as high values, <code>false</code>
 329:  * otherwise.
 330:  * @exception SQLException If an error occurs.
 331:  */
 332:  boolean nullsAreSortedHigh() throws SQLException;
 333: 
 334:  /**
 335:  * This method tests whether or not NULL's sort as low values.
 336:  *
 337:  * @return <code>true</code> if NULL's sort as low values, <code>false</code>
 338:  * otherwise.
 339:  * @exception SQLException If an error occurs.
 340:  */
 341:  boolean nullsAreSortedLow() throws SQLException;
 342: 
 343:  /**
 344:  * This method tests whether or not NULL's sort as high values.
 345:  *
 346:  * @return <code>true</code> if NULL's sort as high values, <code>false</code>
 347:  * otherwise.
 348:  * @exception SQLException If an error occurs.
 349:  */
 350:  boolean nullsAreSortedAtStart() throws SQLException;
 351: 
 352:  /**
 353:  * This method test whether or not NULL's are sorted to the end
 354:  * of the list regardless of ascending or descending sort order.
 355:  *
 356:  * @return <code>true</code> if NULL's always sort to the end,
 357:  * <code>false</code> otherwise.
 358:  * @exception SQLException If an error occurs.
 359:  */
 360:  boolean nullsAreSortedAtEnd() throws SQLException;
 361: 
 362:  /**
 363:  * This method returns the name of the database product.
 364:  *
 365:  * @return The database product.
 366:  * @exception SQLException If an error occurs.
 367:  */
 368:  String getDatabaseProductName() throws SQLException;
 369: 
 370:  /**
 371:  * This method returns the version of the database product.
 372:  *
 373:  * @return The version of the database product.
 374:  * @exception SQLException If an error occurs.
 375:  */
 376:  String getDatabaseProductVersion() throws SQLException;
 377: 
 378:  /**
 379:  * This method returns the name of the JDBC driver.
 380:  *
 381:  * @return The name of the JDBC driver.
 382:  * @exception SQLException If an error occurs.
 383:  */
 384:  String getDriverName() throws SQLException;
 385: 
 386:  /**
 387:  * This method returns the version of the JDBC driver.
 388:  *
 389:  * @return The version of the JDBC driver.
 390:  * @exception SQLException If an error occurs.
 391:  */
 392:  String getDriverVersion() throws SQLException;
 393: 
 394:  /**
 395:  * This method returns the major version number of the JDBC driver.
 396:  *
 397:  * @return The major version number of the JDBC driver.
 398:  */
 399:  int getDriverMajorVersion();
 400: 
 401:  /**
 402:  * This method returns the minor version number of the JDBC driver.
 403:  *
 404:  * @return The minor version number of the JDBC driver.
 405:  */
 406:  int getDriverMinorVersion();
 407: 
 408:  /**
 409:  * This method tests whether or not the database uses local files to
 410:  * store tables.
 411:  *
 412:  * @return <code>true</code> if the database uses local files, 
 413:  * <code>false</code> otherwise.
 414:  *
 415:  * @exception SQLException If an error occurs.
 416:  */
 417:  boolean usesLocalFiles() throws SQLException;
 418: 
 419:  /**
 420:  * This method tests whether or not the database uses a separate file for
 421:  * each table.
 422:  *
 423:  * @return <code>true</code> if the database uses a separate file for each
 424:  * table <code>false</code> otherwise.
 425:  *
 426:  * @exception SQLException If an error occurs.
 427:  */
 428:  boolean usesLocalFilePerTable() throws SQLException;
 429: 
 430:  /**
 431:  * This method tests whether or not the database supports identifiers
 432:  * with mixed case.
 433:  *
 434:  * @return <code>true</code> if the database supports mixed case identifiers,
 435:  * <code>false</code> otherwise.
 436:  *
 437:  * @exception SQLException If an error occurs.
 438:  */
 439:  boolean supportsMixedCaseIdentifiers() throws SQLException;
 440: 
 441:  /**
 442:  * This method tests whether or not the database treats mixed case
 443:  * identifiers as all upper case.
 444:  *
 445:  * @return <code>true</code> if the database treats all identifiers as
 446:  * upper case, <code>false</code> otherwise.
 447:  * @exception SQLException If an error occurs.
 448:  */
 449:  boolean storesUpperCaseIdentifiers() throws SQLException;
 450: 
 451:  /**
 452:  * This method tests whether or not the database treats mixed case
 453:  * identifiers as all lower case.
 454:  *
 455:  * @return <code>true</code> if the database treats all identifiers as
 456:  * lower case, <code>false</code> otherwise.
 457:  * @exception SQLException If an error occurs.
 458:  */
 459:  boolean storesLowerCaseIdentifiers() throws SQLException;
 460: 
 461:  /**
 462:  * This method tests whether or not the database stores mixed case 
 463:  * identifers even if it treats them as case insensitive.
 464:  *
 465:  * @return <code>true</code> if the database stores mixed case identifiers,
 466:  * <code>false</code> otherwise.
 467:  * @exception SQLException If an error occurs.
 468:  */
 469:  boolean storesMixedCaseIdentifiers() throws SQLException;
 470: 
 471:  /**
 472:  * This method tests whether or not the database supports quoted identifiers
 473:  * with mixed case.
 474:  *
 475:  * @return <code>true</code> if the database supports mixed case quoted
 476:  * identifiers, <code>false</code> otherwise.
 477:  * @exception SQLException If an error occurs.
 478:  */
 479:  boolean supportsMixedCaseQuotedIdentifiers() throws SQLException;
 480: 
 481:  /**
 482:  * This method tests whether or not the database treats mixed case
 483:  * quoted identifiers as all upper case.
 484:  *
 485:  * @return <code>true</code> if the database treats all quoted identifiers 
 486:  * as upper case, <code>false</code> otherwise.
 487:  * @exception SQLException If an error occurs.
 488:  */
 489:  boolean storesUpperCaseQuotedIdentifiers() throws SQLException;
 490: 
 491:  /**
 492:  * This method tests whether or not the database treats mixed case
 493:  * quoted identifiers as all lower case.
 494:  *
 495:  * @return <code>true</code> if the database treats all quoted identifiers 
 496:  * as lower case, <code>false</code> otherwise.
 497:  * @exception SQLException If an error occurs.
 498:  */
 499:  boolean storesLowerCaseQuotedIdentifiers() throws SQLException;
 500: 
 501:  /**
 502:  * This method tests whether or not the database stores mixed case 
 503:  * quoted identifers even if it treats them as case insensitive.
 504:  *
 505:  * @return <code>true</code> if the database stores mixed case quoted 
 506:  * identifiers, <code>false</code> otherwise.
 507:  * @exception SQLException If an error occurs.
 508:  */
 509:  boolean storesMixedCaseQuotedIdentifiers() throws SQLException;
 510: 
 511:  /**
 512:  * This metohd returns the quote string for SQL identifiers.
 513:  *
 514:  * @return The quote string for SQL identifers, or a space if quoting
 515:  * is not supported.
 516:  * @exception SQLException If an error occurs.
 517:  */
 518:  String getIdentifierQuoteString() throws SQLException;
 519: 
 520:  /**
 521:  * This method returns a comma separated list of all the SQL keywords in
 522:  * the database that are not in SQL92.
 523:  *
 524:  * @return The list of SQL keywords not in SQL92.
 525:  * @exception SQLException If an error occurs.
 526:  */
 527:  String getSQLKeywords() throws SQLException;
 528: 
 529:  /**
 530:  * This method returns a comma separated list of math functions.
 531:  *
 532:  * @return The list of math functions.
 533:  * @exception SQLException If an error occurs.
 534:  */
 535:  String getNumericFunctions() throws SQLException;
 536: 
 537:  /**
 538:  * This method returns a comma separated list of string functions.
 539:  *
 540:  * @return The list of string functions.
 541:  * @exception SQLException If an error occurs.
 542:  */
 543:  String getStringFunctions() throws SQLException;
 544: 
 545:  /**
 546:  * This method returns a comma separated list of of system functions.
 547:  *
 548:  * @return A comma separated list of system functions.
 549:  * @exception SQLException If an error occurs.
 550:  */
 551:  String getSystemFunctions() throws SQLException;
 552: 
 553:  /**
 554:  * This method returns comma separated list of time/date functions.
 555:  * 
 556:  * @return The list of time/date functions.
 557:  * @exception SQLException If an error occurs.
 558:  */
 559:  String getTimeDateFunctions() throws SQLException;
 560: 
 561:  /**
 562:  * This method returns the string used to escape wildcards in search strings.
 563:  *
 564:  * @return The string used to escape wildcards in search strings.
 565:  * @exception SQLException If an error occurs.
 566:  */
 567:  String getSearchStringEscape() throws SQLException;
 568: 
 569:  /**
 570:  * This methods returns non-standard characters that can appear in 
 571:  * unquoted identifiers.
 572:  *
 573:  * @return Non-standard characters that can appear in unquoted identifiers.
 574:  * @exception SQLException If an error occurs.
 575:  */
 576:  String getExtraNameCharacters() throws SQLException;
 577: 
 578:  /**
 579:  * This method tests whether or not the database supports
 580:  * "ALTER TABLE ADD COLUMN"
 581:  *
 582:  * @return <code>true</code> if column add supported, <code>false</code>
 583:  * otherwise.
 584:  * @exception SQLException If an error occurs.
 585:  */
 586:  boolean supportsAlterTableWithAddColumn() throws SQLException;
 587: 
 588:  /**
 589:  * This method tests whether or not the database supports
 590:  * "ALTER TABLE DROP COLUMN"
 591:  *
 592:  * @return <code>true</code> if column drop supported, <code>false</code>
 593:  * otherwise.
 594:  * @exception SQLException If an error occurs.
 595:  */
 596:  boolean supportsAlterTableWithDropColumn() throws SQLException;
 597: 
 598:  /**
 599:  * This method tests whether or not column aliasing is supported.
 600:  *
 601:  * @return <code>true</code> if column aliasing is supported,
 602:  * <code>false</code> otherwise.
 603:  * @exception SQLException If an error occurs.
 604:  */
 605:  boolean supportsColumnAliasing() throws SQLException;
 606: 
 607:  /**
 608:  * This method tests whether the concatenation of a NULL and non-NULL
 609:  * value results in a NULL. This will always be true in fully JDBC compliant
 610:  * drivers.
 611:  *
 612:  * @return <code>true</code> if concatenating NULL and a non-NULL value
 613:  * returns a NULL, <code>false</code> otherwise.
 614:  * @exception SQLException If an error occurs.
 615:  */
 616:  boolean nullPlusNonNullIsNull() throws SQLException;
 617: 
 618:  /**
 619:  * Tests whether or not CONVERT is supported.
 620:  *
 621:  * @return <code>true</code> if CONVERT is supported, <code>false</code>
 622:  * otherwise.
 623:  * @exception SQLException If an error occurs.
 624:  */
 625:  boolean supportsConvert() throws SQLException;
 626: 
 627:  /**
 628:  * This method tests whether or not CONVERT can be performed between the
 629:  * specified types. The types are contants from <code>Types</code>.
 630:  *
 631:  * @param fromType The SQL type to convert from.
 632:  * @param toType The SQL type to convert to.
 633:  * @return <code>true</code> if the conversion can be performed,
 634:  * <code>false</code> otherwise.
 635:  * @see Types
 636:  */
 637:  boolean supportsConvert(int fromType, int toType) throws
 638:  SQLException;
 639: 
 640:  /**
 641:  * This method tests whether or not table correlation names are 
 642:  * supported. This will be always be <code>true</code> in a fully JDBC
 643:  * compliant driver.
 644:  *
 645:  * @return <code>true</code> if table correlation names are supported,
 646:  * <code>false</code> otherwise.
 647:  * @exception SQLException If an error occurs.
 648:  */
 649:  boolean supportsTableCorrelationNames() throws SQLException;
 650: 
 651:  /**
 652:  * This method tests whether correlation names must be different from the
 653:  * name of the table.
 654:  *
 655:  * @return <code>true</code> if the correlation name must be different from
 656:  * the table name, <code>false</code> otherwise.
 657:  * @exception SQLException If an error occurs.
 658:  */
 659:  boolean supportsDifferentTableCorrelationNames() throws SQLException;
 660: 
 661:  /**
 662:  * This method tests whether or not expressions are allowed in an
 663:  * ORDER BY lists.
 664:  *
 665:  * @return <code>true</code> if expressions are allowed in ORDER BY
 666:  * lists, <code>false</code> otherwise.
 667:  * @exception SQLException If an error occurs.
 668:  */
 669:  boolean supportsExpressionsInOrderBy() throws SQLException;
 670: 
 671:  /**
 672:  * This method tests whether or ORDER BY on a non-selected column is
 673:  * allowed.
 674:  *
 675:  * @return <code>true</code> if a non-selected column can be used in an
 676:  * ORDER BY, <code>false</code> otherwise.
 677:  * @exception SQLException If an error occurs.
 678:  */
 679:  boolean supportsOrderByUnrelated() throws SQLException;
 680: 
 681:  /**
 682:  * This method tests whether or not GROUP BY is supported.
 683:  *
 684:  * @return <code>true</code> if GROUP BY is supported, <code>false</code>
 685:  * otherwise.
 686:  * @exception SQLException If an error occurs.
 687:  */
 688:  boolean supportsGroupBy() throws SQLException;
 689: 
 690:  /**
 691:  * This method tests whether GROUP BY on a non-selected column is
 692:  * allowed.
 693:  *
 694:  * @return <code>true</code> if a non-selected column can be used in a
 695:  * GROUP BY, <code>false</code> otherwise.
 696:  * @exception SQLException If an error occurs.
 697:  */
 698:  boolean supportsGroupByUnrelated() throws SQLException;
 699: 
 700:  /**
 701:  * This method tests whether or not a GROUP BY can add columns not in the
 702:  * select if it includes all the columns in the select.
 703:  *
 704:  * @return <code>true</code> if GROUP BY an add columns provided it includes
 705:  * all columns in the select, <code>false</code> otherwise.
 706:  * @exception SQLException If an error occurs.
 707:  */
 708:  boolean supportsGroupByBeyondSelect() throws SQLException;
 709: 
 710:  /**
 711:  * This method tests whether or not the escape character is supported in
 712:  * LIKE expressions. A fully JDBC compliant driver will always return
 713:  * <code>true</code>.
 714:  *
 715:  * @return <code>true</code> if escapes are supported in LIKE expressions,
 716:  * <code>false</code> otherwise.
 717:  * @exception SQLException If an error occurs.
 718:  */
 719:  boolean supportsLikeEscapeClause() throws SQLException;
 720: 
 721:  /**
 722:  * This method tests whether multiple result sets for a single statement are
 723:  * supported.
 724:  *
 725:  * @return <code>true</code> if multiple result sets are supported for a 
 726:  * single statement, <code>false</code> otherwise.
 727:  * @exception SQLException If an error occurs.
 728:  */
 729:  boolean supportsMultipleResultSets() throws SQLException;
 730: 
 731:  /**
 732:  * This method test whether or not multiple transactions may be open
 733:  * at once, as long as they are on different connections.
 734:  *
 735:  * @return <code>true</code> if multiple transactions on different
 736:  * connections are supported, <code>false</code> otherwise.
 737:  * @exception SQLException If an error occurs.
 738:  */
 739:  boolean supportsMultipleTransactions() throws SQLException;
 740: 
 741:  /**
 742:  * This method tests whether or not columns can be defined as NOT NULL. A
 743:  * fully JDBC compliant driver always returns <code>true</code>.
 744:  *
 745:  * @return <code>true</code> if NOT NULL columns are supported,
 746:  * <code>false</code> otherwise.
 747:  * @exception SQLException If an error occurs.
 748:  */
 749:  boolean supportsNonNullableColumns() throws SQLException;
 750: 
 751:  /**
 752:  * This method tests whether or not the minimum grammer for ODBC is supported.
 753:  * A fully JDBC compliant driver will always return <code>true</code>.
 754:  *
 755:  * @return <code>true</code> if the ODBC minimum grammar is supported,
 756:  * <code>false</code> otherwise.
 757:  * @exception SQLException If an error occurs.
 758:  */
 759:  boolean supportsMinimumSQLGrammar() throws SQLException;
 760: 
 761:  /**
 762:  * This method tests whether or not the core grammer for ODBC is supported.
 763:  *
 764:  * @return <code>true</code> if the ODBC core grammar is supported,
 765:  * <code>false</code> otherwise.
 766:  * @exception SQLException If an error occurs.
 767:  */
 768:  boolean supportsCoreSQLGrammar() throws SQLException;
 769: 
 770:  /**
 771:  * This method tests whether or not the extended grammer for ODBC is supported.
 772:  *
 773:  * @return <code>true</code> if the ODBC extended grammar is supported,
 774:  * <code>false</code> otherwise.
 775:  * @exception SQLException If an error occurs.
 776:  */
 777:  boolean supportsExtendedSQLGrammar() throws SQLException;
 778: 
 779:  /**
 780:  * This method tests whether or not the ANSI92 entry level SQL
 781:  * grammar is supported. A fully JDBC compliant drivers must return
 782:  * <code>true</code>.
 783:  *
 784:  * @return <code>true</code> if the ANSI92 entry level SQL grammar is
 785:  * supported, <code>false</code> otherwise.
 786:  * @exception SQLException If an error occurs.
 787:  */
 788:  boolean supportsANSI92EntryLevelSQL() throws SQLException;
 789: 
 790:  /**
 791:  * This method tests whether or not the ANSI92 intermediate SQL
 792:  * grammar is supported. 
 793:  *
 794:  * @return <code>true</code> if the ANSI92 intermediate SQL grammar is
 795:  * supported, <code>false</code> otherwise.
 796:  * @exception SQLException If an error occurs.
 797:  */
 798:  boolean supportsANSI92IntermediateSQL() throws SQLException;
 799: 
 800:  /**
 801:  * This method tests whether or not the ANSI92 full SQL
 802:  * grammar is supported. 
 803:  *
 804:  * @return <code>true</code> if the ANSI92 full SQL grammar is
 805:  * supported, <code>false</code> otherwise.
 806:  * @exception SQLException If an error occurs.
 807:  */
 808:  boolean supportsANSI92FullSQL() throws SQLException;
 809: 
 810:  /**
 811:  * This method tests whether or not the SQL integrity enhancement
 812:  * facility is supported.
 813:  *
 814:  * @return <code>true</code> if the integrity enhancement facility is
 815:  * supported, <code>false</code> otherwise.
 816:  * @exception SQLException If an error occurs.
 817:  */
 818:  boolean supportsIntegrityEnhancementFacility() throws SQLException;
 819: 
 820:  /**
 821:  * This method tests whether or not the database supports outer joins.
 822:  *
 823:  * @return <code>true</code> if outer joins are supported, <code>false</code>
 824:  * otherwise.
 825:  * @exception SQLException If an error occurs.
 826:  */
 827:  boolean supportsOuterJoins() throws SQLException;
 828: 
 829:  /**
 830:  * This method tests whether or not the database supports full outer joins.
 831:  *
 832:  * @return <code>true</code> if full outer joins are supported, 
 833:  * <code>false</code> otherwise.
 834:  * @exception SQLException If an error occurs.
 835:  */
 836:  boolean supportsFullOuterJoins() throws SQLException;
 837: 
 838:  /**
 839:  * This method tests whether or not the database supports limited outer joins.
 840:  *
 841:  * @return <code>true</code> if limited outer joins are supported, 
 842:  * <code>false</code> otherwise.
 843:  * @exception SQLException If an error occurs.
 844:  */
 845:  boolean supportsLimitedOuterJoins() throws SQLException;
 846: 
 847:  /**
 848:  * This method returns the vendor's term for "schema".
 849:  *
 850:  * @return The vendor's term for schema.
 851:  * @exception SQLException if an error occurs.
 852:  */
 853:  String getSchemaTerm() throws SQLException;
 854: 
 855:  /**
 856:  * This method returns the vendor's term for "procedure".
 857:  *
 858:  * @return The vendor's term for procedure.
 859:  * @exception SQLException if an error occurs.
 860:  */
 861:  String getProcedureTerm() throws SQLException;
 862: 
 863:  /**
 864:  * This method returns the vendor's term for "catalog".
 865:  *
 866:  * @return The vendor's term for catalog.
 867:  * @exception SQLException if an error occurs.
 868:  */
 869:  String getCatalogTerm() throws SQLException;
 870: 
 871:  /**
 872:  * This method tests whether a catalog name appears at the beginning of
 873:  * a fully qualified table name.
 874:  *
 875:  * @return <code>true</code> if the catalog name appears at the beginning,
 876:  * <code>false</code> if it appears at the end.
 877:  * @exception SQLException If an error occurs.
 878:  */
 879:  boolean isCatalogAtStart() throws SQLException;
 880: 
 881:  /**
 882:  * This method returns the separator between the catalog name and the
 883:  * table name.
 884:  *
 885:  * @return The separator between the catalog name and the table name.
 886:  * @exception SQLException If an error occurs.
 887:  */
 888:  String getCatalogSeparator() throws SQLException;
 889: 
 890:  /**
 891:  * This method tests whether a catalog name can appear in a data
 892:  * manipulation statement.
 893:  *
 894:  * @return <code>true</code> if a catalog name can appear in a data
 895:  * manipulation statement, <code>false</code> otherwise.
 896:  * @exception SQLException If an error occurs.
 897:  */
 898:  boolean supportsSchemasInDataManipulation() throws SQLException;
 899: 
 900:  /**
 901:  * This method tests whether a catalog name can appear in a procedure
 902:  * call
 903:  *
 904:  * @return <code>true</code> if a catalog name can appear in a procedure
 905:  * call, <code>false</code> otherwise.
 906:  * @exception SQLException If an error occurs.
 907:  */
 908:  boolean supportsSchemasInProcedureCalls() throws SQLException;
 909: 
 910:  /**
 911:  * This method tests whether a catalog name can appear in a table definition.
 912:  *
 913:  * @return <code>true</code> if a catalog name can appear in a table
 914:  * definition, <code>false</code> otherwise.
 915:  * @exception SQLException If an error occurs.
 916:  */
 917:  boolean supportsSchemasInTableDefinitions() throws SQLException;
 918: 
 919:  /**
 920:  * This method tests whether a catalog name can appear in an index definition.
 921:  *
 922:  * @return <code>true</code> if a catalog name can appear in an index
 923:  * definition, <code>false</code> otherwise.
 924:  * @exception SQLException If an error occurs.
 925:  */
 926:  boolean supportsSchemasInIndexDefinitions() throws SQLException;
 927: 
 928:  /**
 929:  * This method tests whether a catalog name can appear in privilege definitions.
 930:  *
 931:  * @return <code>true</code> if a catalog name can appear in privilege
 932:  * definition, <code>false</code> otherwise.
 933:  * @exception SQLException If an error occurs.
 934:  */
 935:  boolean supportsSchemasInPrivilegeDefinitions() throws SQLException;
 936: 
 937:  /**
 938:  * This method tests whether a catalog name can appear in a data
 939:  * manipulation statement.
 940:  *
 941:  * @return <code>true</code> if a catalog name can appear in a data
 942:  * manipulation statement, <code>false</code> otherwise.
 943:  * @exception SQLException If an error occurs.
 944:  */
 945:  boolean supportsCatalogsInDataManipulation() throws SQLException;
 946: 
 947:  /**
 948:  * This method tests whether a catalog name can appear in a procedure
 949:  * call
 950:  *
 951:  * @return <code>true</code> if a catalog name can appear in a procedure
 952:  * call, <code>false</code> otherwise.
 953:  * @exception SQLException If an error occurs.
 954:  */
 955:  boolean supportsCatalogsInProcedureCalls() throws SQLException;
 956: 
 957:  /**
 958:  * This method tests whether a catalog name can appear in a table definition.
 959:  *
 960:  * @return <code>true</code> if a catalog name can appear in a table
 961:  * definition, <code>false</code> otherwise.
 962:  * @exception SQLException If an error occurs.
 963:  */
 964:  boolean supportsCatalogsInTableDefinitions() throws SQLException;
 965: 
 966:  /**
 967:  * This method tests whether a catalog name can appear in an index definition.
 968:  *
 969:  * @return <code>true</code> if a catalog name can appear in an index
 970:  * definition, <code>false</code> otherwise.
 971:  * @exception SQLException If an error occurs.
 972:  */
 973:  boolean supportsCatalogsInIndexDefinitions() throws SQLException;
 974: 
 975:  /**
 976:  * This method tests whether a catalog name can appear in privilege definitions.
 977:  *
 978:  * @return <code>true</code> if a catalog name can appear in privilege
 979:  * definition, <code>false</code> otherwise.
 980:  * @exception SQLException If an error occurs.
 981:  */
 982:  boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException;
 983: 
 984:  /**
 985:  * This method tests whether or not that database supports positioned
 986:  * deletes.
 987:  *
 988:  * @return <code>true</code> if positioned deletes are supported,
 989:  * <code>false</code> otherwise.
 990:  * @exception SQLException If an error occurs.
 991:  */
 992:  boolean supportsPositionedDelete() throws SQLException;
 993: 
 994:  /**
 995:  * This method tests whether or not that database supports positioned
 996:  * updates.
 997:  *
 998:  * @return <code>true</code> if positioned updates are supported,
 999:  * <code>false</code> otherwise.
1000:  * @exception SQLException If an error occurs.
1001:  */
1002:  boolean supportsPositionedUpdate() throws SQLException;
1003: 
1004:  /**
1005:  * This method tests whether or not SELECT FOR UPDATE is supported by the
1006:  * database.
1007:  *
1008:  * @return <code>true</code> if SELECT FOR UPDATE is supported 
1009:  * <code>false</code> otherwise.
1010:  * @exception SQLException If an error occurs.
1011:  */
1012:  boolean supportsSelectForUpdate() throws SQLException;
1013: 
1014:  /**
1015:  * This method tests whether or not stored procedures are supported on
1016:  * this database.
1017:  *
1018:  * @return <code>true</code> if stored procedures are supported,
1019:  * <code>false</code> otherwise.
1020:  * @exception SQLException If an error occurs.
1021:  */
1022:  boolean supportsStoredProcedures() throws SQLException;
1023: 
1024:  /**
1025:  * This method tests whether or not subqueries are allowed in comparisons.
1026:  * A fully JDBC compliant driver will always return <code>true</code>.
1027:  *
1028:  * @return <code>true</code> if subqueries are allowed in comparisons,
1029:  * <code>false</code> otherwise.
1030:  * @exception SQLException If an error occurs.
1031:  */
1032:  boolean supportsSubqueriesInComparisons() throws SQLException;
1033: 
1034:  /**
1035:  * This method tests whether or not subqueries are allowed in exists
1036:  * expressions. A fully JDBC compliant driver will always return
1037:  * <code>true</code>.
1038:  *
1039:  * @return <code>true</code> if subqueries are allowed in exists 
1040:  * expressions, <code>false</code> otherwise.
1041:  * @exception SQLException If an error occurs.
1042:  */
1043:  boolean supportsSubqueriesInExists() throws SQLException;
1044: 
1045:  /**
1046:  * This method tests whether subqueries are allowed in IN statements.
1047:  * A fully JDBC compliant driver will always return <code>true</code>.
1048:  *
1049:  * @return <code>true</code> if the driver supports subqueries in IN
1050:  * statements, <code>false</code> otherwise.
1051:  * @exception SQLException If an error occurs.
1052:  */
1053:  boolean supportsSubqueriesInIns() throws SQLException;
1054: 
1055:  /**
1056:  * This method tests whether or not subqueries are allowed in quantified
1057:  * expressions. A fully JDBC compliant driver will always return
1058:  * <code>true</code>.
1059:  *
1060:  * @return <code>true</code> if subqueries are allowed in quantified 
1061:  * expressions, <code>false</code> otherwise.
1062:  * @exception SQLException If an error occurs.
1063:  */
1064:  boolean supportsSubqueriesInQuantifieds() throws SQLException;
1065: 
1066:  /**
1067:  * This method test whether or not correlated subqueries are allowed. A
1068:  * fully JDBC compliant driver will always return <code>true</code>.
1069:  *
1070:  * @return <code>true</code> if correlated subqueries are allowed,
1071:  * <code>false</code> otherwise.
1072:  * @exception SQLException If an error occurs.
1073:  */
1074:  boolean supportsCorrelatedSubqueries() throws SQLException;
1075: 
1076:  /**
1077:  * This method tests whether or not the UNION statement is supported.
1078:  *
1079:  * @return <code>true</code> if UNION is supported, <code>false</code>
1080:  * otherwise.
1081:  * @exception SQLException If an error occurs.
1082:  */
1083:  boolean supportsUnion() throws SQLException;
1084: 
1085:  /**
1086:  * This method tests whether or not the UNION ALL statement is supported.
1087:  *
1088:  * @return <code>true</code> if UNION ALL is supported, <code>false</code>
1089:  * otherwise.
1090:  * @exception SQLException If an error occurs.
1091:  */
1092:  boolean supportsUnionAll() throws SQLException;
1093: 
1094:  /**
1095:  * This method tests whether or not the database supports cursors
1096:  * remaining open across commits.
1097:  *
1098:  * @return <code>true</code> if cursors can remain open across commits,
1099:  * <code>false</code> otherwise.
1100:  * @exception SQLException If an error occurs.
1101:  */
1102:  boolean supportsOpenCursorsAcrossCommit() throws SQLException;
1103: 
1104:  /**
1105:  * This method tests whether or not the database supports cursors
1106:  * remaining open across rollbacks.
1107:  *
1108:  * @return <code>true</code> if cursors can remain open across rollbacks,
1109:  * <code>false</code> otherwise.
1110:  * @exception SQLException If an error occurs.
1111:  */
1112:  boolean supportsOpenCursorsAcrossRollback() throws SQLException;
1113: 
1114:  /**
1115:  * This method tests whether or not the database supports statements
1116:  * remaining open across commits.
1117:  *
1118:  * @return <code>true</code> if statements can remain open across commits,
1119:  * <code>false</code> otherwise.
1120:  * @exception SQLException If an error occurs.
1121:  */
1122:  boolean supportsOpenStatementsAcrossCommit() throws SQLException;
1123: 
1124:  /**
1125:  * This method tests whether or not the database supports statements
1126:  * remaining open across rollbacks.
1127:  *
1128:  * @return <code>true</code> if statements can remain open across rollbacks,
1129:  * <code>false</code> otherwise.
1130:  * @exception SQLException If an error occurs.
1131:  */
1132:  boolean supportsOpenStatementsAcrossRollback() throws SQLException;
1133: 
1134:  /**
1135:  * This method returns the number of hex characters allowed in an inline
1136:  * binary literal.
1137:  *
1138:  * @return The number of hex characters allowed in a binary literal, 0 meaning
1139:  * either an unknown or unlimited number.
1140:  * @exception SQLException If an error occurs.
1141:  */
1142:  int getMaxBinaryLiteralLength() throws SQLException;
1143: 
1144:  /**
1145:  * This method returns the maximum length of a character literal.
1146:  * 
1147:  * @return The maximum length of a character literal.
1148:  * @exception SQLException If an error occurs.
1149:  */
1150:  int getMaxCharLiteralLength() throws SQLException;
1151: 
1152:  /**
1153:  * This method returns the maximum length of a column name.
1154:  *
1155:  * @return The maximum length of a column name.
1156:  * @exception SQLException If an error occurs.
1157:  */
1158:  int getMaxColumnNameLength() throws SQLException;
1159: 
1160:  /**
1161:  * This method returns the maximum number of columns in a GROUP BY statement.
1162:  *
1163:  * @return The maximum number of columns in a GROUP BY statement.
1164:  * @exception SQLException If an error occurs.
1165:  */
1166:  int getMaxColumnsInGroupBy() throws SQLException;
1167: 
1168:  /**
1169:  * This method returns the maximum number of columns in an index.
1170:  *
1171:  * @return The maximum number of columns in an index.
1172:  * @exception SQLException If an error occurs.
1173:  */
1174:  int getMaxColumnsInIndex() throws SQLException;
1175: 
1176:  /**
1177:  * This method returns the maximum number of columns in an ORDER BY statement.
1178:  *
1179:  * @return The maximum number of columns in an ORDER BY statement.
1180:  * @exception SQLException If an error occurs.
1181:  */
1182:  int getMaxColumnsInOrderBy() throws SQLException;
1183: 
1184:  /**
1185:  * This method returns the maximum number of columns in a SELECT statement.
1186:  *
1187:  * @return The maximum number of columns in a SELECT statement.
1188:  * @exception SQLException If an error occurs.
1189:  */
1190:  int getMaxColumnsInSelect() throws SQLException;
1191: 
1192:  /**
1193:  * This method returns the maximum number of columns in a table.
1194:  *
1195:  * @return The maximum number of columns in a table.
1196:  * @exception SQLException If an error occurs.
1197:  */
1198:  int getMaxColumnsInTable() throws SQLException;
1199: 
1200:  /**
1201:  * This method returns the maximum number of connections this client
1202:  * can have to the database.
1203:  *
1204:  * @return The maximum number of database connections.
1205:  * @SQLException If an error occurs.
1206:  */
1207:  int getMaxConnections() throws SQLException;
1208: 
1209:  /**
1210:  * This method returns the maximum length of a cursor name.
1211:  *
1212:  * @return The maximum length of a cursor name.
1213:  * @exception SQLException If an error occurs.
1214:  */
1215:  int getMaxCursorNameLength() throws SQLException;
1216: 
1217:  /**
1218:  * This method returns the maximum length of an index.
1219:  *
1220:  * @return The maximum length of an index.
1221:  * @exception SQLException If an error occurs.
1222:  */
1223:  int getMaxIndexLength() throws SQLException;
1224: 
1225:  /**
1226:  * This method returns the maximum length of a schema name.
1227:  *
1228:  * @return The maximum length of a schema name.
1229:  * @exception SQLException If an error occurs.
1230:  */
1231:  int getMaxSchemaNameLength() throws SQLException;
1232: 
1233:  /**
1234:  * This method returns the maximum length of a procedure name.
1235:  *
1236:  * @return The maximum length of a procedure name.
1237:  * @exception SQLException If an error occurs.
1238:  */
1239:  int getMaxProcedureNameLength() throws SQLException;
1240: 
1241:  /**
1242:  * This method returns the maximum length of a catalog name.
1243:  *
1244:  * @return The maximum length of a catalog name.
1245:  * @exception SQLException If an error occurs.
1246:  */
1247:  int getMaxCatalogNameLength() throws SQLException;
1248: 
1249:  /**
1250:  * This method returns the maximum size of a row in bytes.
1251:  *
1252:  * @return The maximum size of a row.
1253:  * @exception SQLException If an error occurs.
1254:  */
1255:  int getMaxRowSize() throws SQLException;
1256: 
1257:  /**
1258:  * This method tests whether or not the maximum row size includes BLOB's
1259:  *
1260:  * @return <code>true</code> if the maximum row size includes BLOB's,
1261:  * <code>false</code> otherwise.
1262:  * @exception SQLException If an error occurs.
1263:  */
1264:  boolean doesMaxRowSizeIncludeBlobs() throws SQLException;
1265: 
1266:  /**
1267:  * This method includes the maximum length of a SQL statement.
1268:  *
1269:  * @return The maximum length of a SQL statement.
1270:  * @exception SQLException If an error occurs.
1271:  */
1272:  int getMaxStatementLength() throws SQLException;
1273: 
1274:  /**
1275:  * This method returns the maximum number of statements that can be
1276:  * active at any time.
1277:  *
1278:  * @return The maximum number of statements that can be active at any time.
1279:  * @exception SQLException If an error occurs.
1280:  */
1281:  int getMaxStatements() throws SQLException;
1282: 
1283:  /**
1284:  * This method returns the maximum length of a table name.
1285:  *
1286:  * @return The maximum length of a table name.
1287:  * @exception SQLException If an error occurs.
1288:  */
1289:  int getMaxTableNameLength() throws SQLException;
1290: 
1291:  /**
1292:  * This method returns the maximum number of tables that may be referenced
1293:  * in a SELECT statement.
1294:  *
1295:  * @return The maximum number of tables allowed in a SELECT statement.
1296:  * @exception SQLException If an error occurs.
1297:  */
1298:  int getMaxTablesInSelect() throws SQLException;
1299: 
1300:  /**
1301:  * This method returns the maximum length of a user name.
1302:  *
1303:  * @return The maximum length of a user name.
1304:  * @exception SQLException If an error occurs.
1305:  */
1306:  int getMaxUserNameLength() throws SQLException;
1307: 
1308:  /**
1309:  * This method returns the default transaction isolation level of the
1310:  * database.
1311:  *
1312:  * @return The default transaction isolation level of the database.
1313:  * @exception SQLException If an error occurs.
1314:  * @see Connection
1315:  */
1316:  int getDefaultTransactionIsolation() throws SQLException;
1317: 
1318:  /**
1319:  * This method tests whether or not the database supports transactions.
1320:  *
1321:  * @return <code>true</code> if the database supports transactions,
1322:  * <code>false</code> otherwise.
1323:  * @exception SQLException If an error occurs.
1324:  */
1325:  boolean supportsTransactions() throws SQLException;
1326: 
1327:  /**
1328:  * This method tests whether or not the database supports the specified
1329:  * transaction isolation level.
1330:  *
1331:  * @param level The transaction isolation level.
1332:  *
1333:  * @return <code>true</code> if the specified transaction isolation level
1334:  * is supported, <code>false</code> otherwise.
1335:  * @exception SQLException If an error occurs.
1336:  */
1337:  boolean supportsTransactionIsolationLevel(int level) throws
1338:  SQLException;
1339: 
1340:  /**
1341:  * This method tests whether or not DDL and DML statements allowed within 
1342:  * the same transaction.
1343:  *
1344:  * @return <code>true</code> if DDL and DML statements are allowed in the
1345:  * same transaction, <code>false</code> otherwise.
1346:  * @exception SQLException If an error occurs.
1347:  */
1348:  boolean supportsDataDefinitionAndDataManipulationTransactions()
1349:  throws SQLException;
1350: 
1351:  /**
1352:  * This method tests whether or not only DML statement are allowed
1353:  * inside a transaction.
1354:  *
1355:  * @return <code>true</code> if only DML statements are allowed in
1356:  * transactions, <code>false</code> otherwise.
1357:  * @exception SQLException If an error occurs.
1358:  */
1359:  boolean supportsDataManipulationTransactionsOnly() throws
1360:  SQLException;
1361: 
1362:  /**
1363:  * This method tests whether or not a DDL statement will cause the
1364:  * current transaction to be automatically committed.
1365:  *
1366:  * @return <code>true</code> if DDL causes an immediate transaction commit,
1367:  * <code>false</code> otherwise.
1368:  * @exception SQLException If an error occurs.
1369:  */
1370:  boolean dataDefinitionCausesTransactionCommit() throws SQLException;
1371: 
1372:  /**
1373:  * This method tests whether or not DDL statements are ignored in
1374:  * transactions.
1375:  *
1376:  * @return <code>true</code> if DDL statements are ignored in transactions,
1377:  * <code>false</code> otherwise.
1378:  * @exception SQLException If an error occurs.
1379:  */
1380:  boolean dataDefinitionIgnoredInTransactions() throws SQLException;
1381: 
1382:  /**
1383:  * This method returns a list of all the stored procedures matching the
1384:  * specified pattern in the given schema and catalog. This is returned
1385:  * a <code>ResultSet</code> with the following columns:
1386:  * <p>
1387:  * <ol>
1388:  * <li>PROCEDURE_CAT - The catalog the procedure is in, which may be 
1389:  * <code>null</code>.</li>
1390:  * <li>PROCEDURE_SCHEM - The schema the procedures is in, which may be
1391:  * <code>null</code>.</li>
1392:  * <li>PROCEDURE_NAME - The name of the procedure.</li>
1393:  * <li>Unused</li>
1394:  * <li>Unused</li>
1395:  * <li>Unused</li>
1396:  * <li>REMARKS - A description of the procedure</li>
1397:  * <li>PROCEDURE_TYPE - Indicates the return type of the procedure, which 
1398:  * is one of the contstants defined in this class 
1399:  * (<code>procedureResultUnknown</code>, <code>procedureNoResult</code>, or
1400:  * <code>procedureReturnsResult</code>).</li>
1401:  * </ol>
1402:  *
1403:  * @param catalog The name of the catalog to return stored procedured from,
1404:  * or "" to return procedures from all catalogs.
1405:  * @param schemaPattern A schema pattern for the schemas to return stored
1406:  * procedures from, or "" to return procedures from all schemas.
1407:  * @param procedurePattern The pattern of procedure names to return.
1408:  * @returns A <code>ResultSet</code> with all the requested procedures.
1409:  * @exception SQLException If an error occurs.
1410:  */
1411:  ResultSet getProcedures(String catalog, String schemaPattern, String
1412:  procedurePattern) throws SQLException;
1413: 
1414:  /**
1415:  * This method returns a list of the parameter and result columns for
1416:  * the requested stored procedures. This is returned in the form of a
1417:  * <code>ResultSet</code> with the following columns:
1418:  * <p>
1419:  * <ol>
1420:  * <li>PROCEDURE_CAT - The catalog the procedure is in, which may be 
1421:  * <code>null</code>.</li>
1422:  * <li>PROCEDURE_SCHEM - The schema the procedures is in, which may be
1423:  * <code>null</code>.</li>
1424:  * <li>PROCEDURE_NAME - The name of the procedure.</li>
1425:  * <li>COLUMN_NAME - The name of the column</li>
1426:  * <li>COLUMN_TYPE - The type of the column, which will be one of the
1427:  * contants defined in this class (<code>procedureColumnUnknown</code>,
1428:  * <code>procedureColumnIn</code>, <code>procedureColumnInOut</code>,
1429:  * <code>procedureColumnOut</code>, <code>procedureColumnReturn</code>,
1430:  * or <code>procedureColumnResult</code>).</li>
1431:  * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1432:  * defined in <code>Types</code>.</li>
1433:  * <li>TYPE_NAME - The string name of the data type for this column.</li>
1434:  * <li>PRECISION - The precision of the column.</li>
1435:  * <li>LENGTH - The length of the column in bytes</li>
1436:  * <li>SCALE - The scale of the column.</li>
1437:  * <li>RADIX - The radix of the column.</li>
1438:  * <li>NULLABLE - Whether or not the column is NULLABLE. This is one of
1439:  * the constants defined in this class (<code>procedureNoNulls</code>,
1440:  * <code>procedureNullable</code>, or <code>procedureNullableUnknown</code>)</li>
1441:  * <li>REMARKS - A description of the column.</li>
1442:  * </ol>
1443:  *
1444:  * @param catalog The name of the catalog to return stored procedured from,
1445:  * or "" to return procedures from all catalogs.
1446:  * @param schemaPattern A schema pattern for the schemas to return stored
1447:  * procedures from, or "" to return procedures from all schemas.
1448:  * @param procedurePattern The pattern of procedures names to return.
1449:  * @param columnPattern The pattern of column names to return.
1450:  * @returns A <code>ResultSet</code> with all the requested procedures.
1451:  * @exception SQLException If an error occurs.
1452:  */
1453:  ResultSet getProcedureColumns(String catalog, String schemaPattern,
1454:  String procedurePattern, String columnPattern) throws
1455:  SQLException;
1456: 
1457:  /**
1458:  * This method returns a list of the requested table as a 
1459:  * <code>ResultSet</code> with the following columns:
1460:  *
1461:  * <ol>
1462:  * <li>TABLE_CAT - The catalog the table is in, which may be <code>null</code>.</li>
1463:  * <li>TABLE_SCHEM - The schema the table is in, which may be <code>null</code>.</li>
1464:  * <li>TABLE_NAME - The name of the table.</li>
1465:  * <li>TABLE_TYPE - A string describing the table type. This will be one
1466:  * of the values returned by the <code>getTableTypes()</code> method.</li>
1467:  * <li>REMARKS - Comments about the table.</li>
1468:  * </ol>
1469:  * 
1470:  * @param catalog The name of the catalog to return tables from,
1471:  * or "" to return tables from all catalogs.
1472:  * @param schemaPattern A schema pattern for the schemas to return tables
1473:  * from, or "" to return tables from all schemas.
1474:  * @param tablePattern The pattern of table names to return.
1475:  * @param types The list of table types to include; null returns all types.
1476:  * @returns A <code>ResultSet</code> with all the requested tables.
1477:  * @exception SQLException If an error occurs.
1478:  */
1479:  ResultSet getTables(String catalog, String schemaPattern, String
1480:  tablePattern, String[] types) throws SQLException;
1481: 
1482:  /**
1483:  * This method returns the list of database schemas as a 
1484:  * <code>ResultSet</code>, with one column - TABLE_SCHEM - that is the
1485:  * name of the schema.
1486:  *
1487:  * @return A <code>ResultSet</code> with all the requested schemas.
1488:  * @exception SQLException If an error occurs.
1489:  */
1490:  ResultSet getSchemas() throws SQLException;
1491: 
1492:  /**
1493:  * This method returns the list of database catalogs as a
1494:  * <code>ResultSet</code> with one column - TABLE_CAT - that is the
1495:  * name of the catalog.
1496:  *
1497:  * @return A <code>ResultSet</code> with all the requested catalogs.
1498:  * @exception SQLException If an error occurs.
1499:  */
1500:  ResultSet getCatalogs() throws SQLException;
1501: 
1502:  /**
1503:  * This method returns the list of database table types as a
1504:  * <code>ResultSet</code> with one column - TABLE_TYPE - that is the
1505:  * name of the table type.
1506:  *
1507:  * @return A <code>ResultSet</code> with all the requested table types.
1508:  * @exception SQLException If an error occurs.
1509:  */
1510:  ResultSet getTableTypes() throws SQLException;
1511: 
1512:  /**
1513:  * This method returns a list of the tables columns for
1514:  * the requested tables. This is returned in the form of a
1515:  * <code>ResultSet</code> with the following columns:
1516:  * <p>
1517:  * <ol>
1518:  * <li>TABLE_CAT - The catalog the table is in, which may be 
1519:  * <code>null</code>.</li>
1520:  * <li>TABLE_SCHEM - The schema the tables is in, which may be
1521:  * <code>null</code>.</li>
1522:  * <li>TABLE_NAME - The name of the table.</li>
1523:  * <li>COLUMN_NAME - The name of the column</li>
1524:  * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1525:  * defined in <code>Types</code>.</li>
1526:  * <li>TYPE_NAME - The string name of the data type for this column.</li>
1527:  * <li>COLUMN_SIZE - The size of the column.</li>
1528:  * <li>Unused</li>
1529:  * <li>NUM_PREC_RADIX - The radix of the column.</li>
1530:  * <li>NULLABLE - Whether or not the column is NULLABLE. This is one of
1531:  * the constants defined in this class (<code>tableNoNulls</code>,
1532:  * <code>tableNullable</code>, or <code>tableNullableUnknown</code>)</li>
1533:  * <li>REMARKS - A description of the column.</li>
1534:  * <li>COLUMN_DEF - The default value for the column, may be <code>null</code>.</li>
1535:  * <li>SQL_DATA_TYPE - Unused</li>
1536:  * <li>SQL_DATETIME_SUB - Unused</li>
1537:  * <li>CHAR_OCTET_LENGTH - For character columns, the maximum number of bytes
1538:  * in the column.</li>
1539:  * <li>ORDINAL_POSITION - The index of the column in the table.</li>
1540:  * <li>IS_NULLABLE - "NO" means no, "YES" means maybe, and an empty string
1541:  * means unknown.</li>
1542:  * </ol>
1543:  *
1544:  * @param catalog The name of the catalog to return table from,
1545:  * or "" to return tables from all catalogs.
1546:  * @param schemaPattern A schema pattern for the schemas to return 
1547:  * tables from, or "" to return tables from all schemas.
1548:  * @param tablePattern The pattern of table names to return.
1549:  * @param columnPattern The pattern of column names to return.
1550:  * @returns A <code>ResultSet</code> with all the requested tables.
1551:  * @exception SQLException If an error occurs.
1552:  */
1553:  ResultSet getColumns(String catalog, String schemaPattern, String
1554:  tablePattern, String columnPattern) throws SQLException;
1555: 
1556:  /**
1557:  * This method returns the access rights that have been granted to the
1558:  * requested columns. This information is returned as a <code>ResultSet</code>
1559:  * with the following columns:
1560:  *
1561:  * <ol>
1562:  * <li>TABLE_CAT - The catalog the table is in, which may be 
1563:  * <code>null</code>.</li>
1564:  * <li>TABLE_SCHEM - The schema the tables is in, which may be
1565:  * <code>null</code>.</li>
1566:  * <li>TABLE_NAME - The name of the table.</li>
1567:  * <li>COLUMN_NAME - The name of the column.</li>
1568:  * <li>GRANTOR - The entity that granted the access.</li>
1569:  * <li>GRANTEE - The entity granted the access.</li>
1570:  * <li>PRIVILEGE - The name of the privilege granted.</li>
1571:  * <li>IS_GRANTABLE - "YES" if the grantee can grant the privilege to
1572:  * others, "NO" if not, and <code>null</code> if unknown.</li>
1573:  * </ol>
1574:  *
1575:  * @param catalog The catalog to retrieve information from, or the empty string
1576:  * to return entities not associated with a catalog, or <code>null</code>
1577:  * to return information from all catalogs.
1578:  * @param schema The schema to retrieve information from, or the empty string
1579:  * to return entities not associated with a schema.
1580:  * @param tableName The table name to return information for.
1581:  * @param columnPattern A pattern of column names to return information for.
1582:  * @return A <code>ResultSet</code> with all the requested privileges.
1583:  * @exception SQLException If an error occurs.
1584:  */
1585:  ResultSet getColumnPrivileges(String catalog, String schema, String
1586:  tableName, String columnPattern) throws SQLException;
1587: 
1588:  /**
1589:  * This method returns the access rights that have been granted to the
1590:  * requested tables. This information is returned as a <code>ResultSet</code>
1591:  * with the following columns:
1592:  *
1593:  * <ol>
1594:  * <li>TABLE_CAT - The catalog the table is in, which may be 
1595:  * <code>null</code>.</li>
1596:  * <li>TABLE_SCHEM - The schema the tables is in, which may be
1597:  * <code>null</code>.</li>
1598:  * <li>TABLE_NAME - The name of the table.</li>
1599:  * <li>GRANTOR - The entity that granted the access.</li>
1600:  * <li>GRANTEE - The entity granted the access.</li>
1601:  * <li>PRIVILEGE - The name of the privilege granted.</li>
1602:  * <li>IS_GRANTABLE - "YES" if the grantee can grant the privilege to
1603:  * others, "NO" if not, and <code>null</code> if unknown.</li>
1604:  * </ol>
1605:  *
1606:  * @param catalog The catalog to retrieve information from, or the empty string
1607:  * to return entities not associated with a catalog, or <code>null</code>
1608:  * to return information from all catalogs.
1609:  * @param schemaPattern The schema to retrieve information from, or the empty string
1610:  * to return entities not associated with a schema.
1611:  * @param tablePattern The table name pattern of tables to return 
1612:  * information for.
1613:  * @return A <code>ResultSet</code> with all the requested privileges.
1614:  * @exception SQLException If an error occurs.
1615:  */
1616:  ResultSet getTablePrivileges(String catalog, String schemaPattern,
1617:  String tablePattern) throws SQLException;
1618: 
1619:  /**
1620:  * This method returns the best set of columns for uniquely identifying
1621:  * a row. It returns this information as a <code>ResultSet</code> with
1622:  * the following columns:
1623:  *
1624:  * <ol>
1625:  * <li>SCOPE - The scope of the results returned. This is one of the 
1626:  * constants defined in this class (<code>bestRowTemporary</code>,
1627:  * <code>bestRowTransaction</code>, or <code>bestRowSession</code>).</li>
1628:  * <li>COLUMN_NAME - The name of the column.</li>
1629:  * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1630:  * defined in <code>Types</code>.</li>
1631:  * <li>TYPE_NAME - The string name of the data type for this column.</li>
1632:  * <li>COLUMN_SIZE - The precision of the columns</li>
1633:  * <li>BUFFER_LENGTH - Unused</li>
1634:  * <li>DECIMAL_DIGITS - The scale of the column.</li>
1635:  * <li>PSEUDO_COLUMN - Whether or not the best row identifier is a
1636:  * pseudo_column. This is one of the constants defined in this class 
1637:  * (<code>bestRowUnknown</code>, <code>bestRowNotPseudo</code>, or
1638:  * <code>bestRowPseudo</code>).</li>
1639:  * </ol>
1640:  *
1641:  * @param catalog The catalog to retrieve information from, or the empty string
1642:  * to return entities not associated with a catalog, or <code>null</code>
1643:  * to return information from all catalogs.
1644:  * @param schema The schema to retrieve information from, or the empty string
1645:  * to return entities not associated with a schema.
1646:  * @param tableName The table name to return information for.
1647:  * @param scope One of the best row id scope constants from this class.
1648:  * @param nullable <code>true</code> to include columns that are nullable,
1649:  * <code>false</code> otherwise.
1650:  * @return A <code>ResultSet</code> with the best row identifier.
1651:  * @exception SQLException If an error occurs.
1652:  */
1653:  ResultSet getBestRowIdentifier(String catalog, String schema,
1654:  String tableName, int scope, boolean nullable) throws SQLException;
1655: 
1656:  /**
1657:  * This method returns the set of columns that are automatically updated
1658:  * when the row is update. It returns this information as a 
1659:  * <code>ResultSet</code> with the following columns:
1660:  *
1661:  * <ol>
1662:  * <li>SCOPE - Unused</li>
1663:  * <li>COLUMN_NAME - The name of the column.</li>
1664:  * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1665:  * defined in <code>Types</code>.</li>
1666:  * <li>TYPE_NAME - The string name of the data type for this column.</li>
1667:  * <li>COLUMN_SIZE - The precision of the columns</li>
1668:  * <li>BUFFER_LENGTH - Unused</li>
1669:  * <li>DECIMAL_DIGITS - The scale of the column.</li>
1670:  * <li>PSEUDO_COLUMN - Whether or not the best row identifier is a
1671:  * pseudo_column. This is one of the constants defined in this class 
1672:  * (<code>versionRowUnknown</code>, <code>versionRowNotPseudo</code>, or
1673:  * <code>versionRowPseudo</code>).</li>
1674:  * </ol>
1675:  *
1676:  * @param catalog The catalog to retrieve information from, or the empty string
1677:  * to return entities not associated with a catalog, or <code>null</code>
1678:  * to return information from all catalogs.
1679:  * @param schema The schema to retrieve information from, or the empty string
1680:  * to return entities not associated with a schema.
1681:  * @param tableName The table name to return information for
1682:  * @return A <code>ResultSet</code> with the version columns.
1683:  * @exception SQLException If an error occurs.
1684:  */
1685:  ResultSet getVersionColumns(String catalog, String schema,
1686:  String tableName) throws SQLException;
1687: 
1688:  /**
1689:  * This method returns a list of a table's primary key columns. These
1690:  * are returned as a <code>ResultSet</code> with the following columns.
1691:  *
1692:  * <ol>
1693:  * <li>TABLE_CAT - The catalog of the table, which may be <code>null</code>.</li>
1694:  * <li>TABLE_SCHEM - The schema of the table, which may be <code>null</code>.</li>
1695:  * <li>TABLE_NAME - The name of the table.</li>
1696:  * <li>COLUMN_NAME - The name of the column.</li>
1697:  * <li>KEY_SEQ - The sequence number of the column within the primary key.</li>
1698:  * <li>PK_NAME - The name of the primary key, which may be <code>null</code>.</li>
1699:  * </ol>
1700:  *
1701:  * @param catalog The catalog to retrieve information from, or the empty string
1702:  * to return entities not associated with a catalog, or <code>null</code>
1703:  * to return information from all catalogs.
1704:  * @param schema The schema to retrieve information from, or the empty string
1705:  * to return entities not associated with a schema.
1706:  * @param tableName The table name to return information for.
1707:  * @return A <code>ResultSet</code> with the primary key columns.
1708:  * @exception SQLException If an error occurs.
1709:  */
1710:  ResultSet getPrimaryKeys(String catalog, String schema, String tableName)
1711:  throws SQLException;
1712: 
1713:  /**
1714:  * This method returns a list of the table's foreign keys. These are
1715:  * returned as a <code>ResultSet</code> with the following columns:
1716:  *
1717:  * <ol>
1718:  * <li>PKTABLE_CAT - The catalog of the table the key was imported from.</li>
1719:  * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.</li>
1720:  * <li>PKTABLE_NAME - The name of the table the key was imported from.</li>
1721:  * <li>PKCOLUMN_NAME - The name of the column that was imported.</li>
1722:  * <li>FKTABLE_CAT - The foreign key catalog name.</li>
1723:  * <li>FKTABLE_SCHEM - The foreign key schema name.</li>
1724:  * <li>FKTABLE_NAME - The foreign key table name.</li>
1725:  * <li>FKCOLUMN_NAME - The foreign key column name.</li>
1726:  * <li>KEY_SEQ - The sequence number of the column within the foreign key.</li>
1727:  * <li>UPDATE_RULE - How the foreign key behaves when the primary key is
1728:  * updated. This is one of the constants defined in this class 
1729:  * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1730:  * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or
1731:  * <code>importedKeyRestrict</code>).</li>
1732:  * <li>DELETE_RULE - How the foreign key behaves when the primary key is
1733:  * deleted. This is one of the constants defined in this class 
1734:  * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1735:  * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)</li>
1736:  * <li>FK_NAME - The name of the foreign key.</li>
1737:  * <li>PK_NAME - The name of the primary key.</li>
1738:  * <li>DEFERRABILITY - The deferrability value. This is one of the
1739:  * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,
1740:  * <code>importedKeyInitiallyImmediate</code>, or
1741:  * <code>importedKeyNotDeferrable</code>).</li>
1742:  * </ol>
1743:  *
1744:  * @param catalog The catalog to retrieve information from, or the empty string
1745:  * to return entities not associated with a catalog, or <code>null</code>
1746:  * to return information from all catalogs.
1747:  * @param schema The schema to retrieve information from, or the empty string
1748:  * to return entities not associated with a schema.
1749:  * @param tableName The table name to return information for.
1750:  * @return A <code>ResultSet</code> with the foreign key columns.
1751:  * @exception SQLException If an error occurs.
1752:  */
1753:  ResultSet getImportedKeys(String catalog, String schema,
1754:  String tableName) throws SQLException;
1755: 
1756:  /**
1757:  * This method returns a list of the table's which use this table's
1758:  * primary key as a foreign key. The information is
1759:  * returned as a <code>ResultSet</code> with the following columns:
1760:  *
1761:  * <ol>
1762:  * <li>PKTABLE_CAT - The catalog of the table the key was imported from.</li>
1763:  * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.</li>
1764:  * <li>PKTABLE_NAME - The name of the table the key was imported from.</li>
1765:  * <li>PKCOLUMN_NAME - The name of the column that was imported.</li>
1766:  * <li>FKTABLE_CAT - The foreign key catalog name.</li>
1767:  * <li>FKTABLE_SCHEM - The foreign key schema name.</li>
1768:  * <li>FKTABLE_NAME - The foreign key table name.</li>
1769:  * <li>FKCOLUMN_NAME - The foreign key column name.</li>
1770:  * <li>KEY_SEQ - The sequence number of the column within the foreign key.</li>
1771:  * <li>UPDATE_RULE - How the foreign key behaves when the primary key is
1772:  * updated. This is one of the constants defined in this class 
1773:  * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1774:  * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or
1775:  * <code>importedKeyRestrict</code>).</li>
1776:  * <li>DELETE_RULE - How the foreign key behaves when the primary key is
1777:  * deleted. This is one of the constants defined in this class 
1778:  * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1779:  * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)</li>
1780:  * <li>FK_NAME - The name of the foreign key.</li>
1781:  * <li>PK_NAME - The name of the primary key.</li>
1782:  * <li>DEFERRABILITY - The deferrability value. This is one of the
1783:  * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,
1784:  * <code>importedKeyInitiallyImmediate</code>, or
1785:  * <code>importedKeyNotDeferrable</code>).</li>
1786:  * </ol>
1787:  *
1788:  * @param catalog The catalog to retrieve information from, or the empty string
1789:  * to return entities not associated with a catalog, or <code>null</code>
1790:  * to return information from all catalogs.
1791:  * @param schema The schema to retrieve information from, or the empty string
1792:  * to return entities not associated with a schema.
1793:  * @param tableName The table name to return information for.
1794:  * @return A <code>ResultSet</code> with the requested information
1795:  * @exception SQLException If an error occurs.
1796:  */
1797:  ResultSet getExportedKeys(String catalog, String schema,
1798:  String tableName) throws SQLException;
1799: 
1800:  /**
1801:  * This method returns a description of how one table imports another
1802:  * table's primary key as a foreign key. The information is
1803:  * returned as a <code>ResultSet</code> with the following columns:
1804:  *
1805:  * <ol>
1806:  * <li>PKTABLE_CAT - The catalog of the table the key was imported from.</li>
1807:  * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.</li>
1808:  * <li>PKTABLE_NAME - The name of the table the key was imported from.</li>
1809:  * <li>PKCOLUMN_NAME - The name of the column that was imported.</li>
1810:  * <li>FKTABLE_CAT - The foreign key catalog name.</li>
1811:  * <li>FKTABLE_SCHEM - The foreign key schema name.</li>
1812:  * <li>FKTABLE_NAME - The foreign key table name.</li>
1813:  * <li>FKCOLUMN_NAME - The foreign key column name.</li>
1814:  * <li>KEY_SEQ - The sequence number of the column within the foreign key.</li>
1815:  * <li>UPDATE_RULE - How the foreign key behaves when the primary key is
1816:  * updated. This is one of the constants defined in this class 
1817:  * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1818:  * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or
1819:  * <code>importedKeyRestrict</code>).</li>
1820:  * <li>DELETE_RULE - How the foreign key behaves when the primary key is
1821:  * deleted. This is one of the constants defined in this class 
1822:  * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1823:  * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)</li>
1824:  * <li>FK_NAME - The name of the foreign key.</li>
1825:  * <li>PK_NAME - The name of the primary key.</li>
1826:  * <li>DEFERRABILITY - The deferrability value. This is one of the
1827:  * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,
1828:  * <code>importedKeyInitiallyImmediate</code>, or
1829:  * <code>importedKeyNotDeferrable</code>).</li>
1830:  * </ol>
1831:  *
1832:  * @param primaryCatalog The catalog to retrieve information from, or the
1833:  * empty string to return entities not associated with a catalog, or
1834:  * <code>null</code> to return information from all catalogs, on the
1835:  * exporting side.
1836:  * @param primarySchema The schema to retrieve information from, or the empty
1837:  * string to return entities not associated with a schema, on the
1838:  * exporting side.
1839:  * @param primaryTableName The table name to return information for, on the
1840:  * exporting side.
1841:  * @param foreignCatalog The catalog to retrieve information from, or the
1842:  * empty string to return entities not associated with a catalog,
1843:  * or <code>null</code> to return information from all catalogs, on
1844:  * the importing side.
1845:  * @param foreignSchema The schema to retrieve information from, or the
1846:  * empty string to return entities not associated with a schema on
1847:  * the importing side.
1848:  * @param foreignTableName The table name to return information for on the
1849:  * importing side.
1850:  * @return A <code>ResultSet</code> with the requested information
1851:  * @exception SQLException If an error occurs.
1852:  */
1853:  ResultSet getCrossReference(String primaryCatalog, String
1854:  primarySchema, String primaryTableName, String foreignCatalog, String
1855:  foreignSchema, String foreignTableName) throws SQLException;
1856: 
1857:  /**
1858:  * This method returns a list of the SQL types supported by this
1859:  * database. The information is returned as a <code>ResultSet</code>
1860:  * with the following columns:
1861:  *
1862:  * <ol>
1863:  * <li>TYPE_NAME - The name of the data type.</li>
1864:  * <li>DATA_TYPE - A data type constant from <code>Types</code> for this
1865:  * type.</li>
1866:  * <li>PRECISION - The maximum precision of this type.</li>
1867:  * <li>LITERAL_PREFIX - Prefix value used to quote a literal, which may be
1868:  * <code>null</code>.</li>
1869:  * <li>LITERAL_SUFFIX - Suffix value used to quote a literal, which may be
1870:  * <code>null</code>.</li>
1871:  * <li>CREATE_PARAMS - The parameters used to create the type, which may be
1872:  * <code>null</code>.</li>
1873:  * <li>NULLABLE - Whether or not this type supports NULL values. This will
1874:  * be one of the constants defined in this interface 
1875:  * (<code>typeNoNulls</code>, <code>typeNullable</code>, or
1876:  * <code>typeNullableUnknown</code>).</li>
1877:  * <li>CASE_SENSITIVE - Whether or not the value is case sensitive.</li>
1878:  * <li>SEARCHABLE - Whether or not "LIKE" expressions are supported in
1879:  * WHERE clauses for this type. This will be one of the constants defined
1880:  * in this interface (<code>typePredNone</code>, <code>typePredChar</code>,
1881:  * <code>typePredBasic</code>, or <code>typeSearchable</code>).</li>
1882:  * <li>UNSIGNED_ATTRIBUTE - Is the value of this type unsigned.</li>
1883:  * <li>FIXED_PREC_SCALE - Whether or not this type can be used for money.</li>
1884:  * <li>AUTO_INCREMENT - Whether or not this type supports auto-incrementing.</li>
1885:  * <li>LOCAL_TYPE_NAME - A localized name for this data type.</li>
1886:  * <li>MINIMUM_SCALE - The minimum scale supported by this type.</li>
1887:  * <li>MAXIMUM_SCALE - The maximum scale supported by this type.</li>
1888:  * <li>SQL_DATA_TYPE - Unused.</li>
1889:  * <li>SQL_DATETIME_SUB - Unused.</li>
1890:  * <li>NUM_PREC_RADIX - The radix of this data type.</li>
1891:  * </ol>
1892:  * 
1893:  * @return A <code>ResultSet</code> with the list of available data types.
1894:  * @exception SQLException If an error occurs.
1895:  */
1896:  ResultSet getTypeInfo() throws SQLException;
1897: 
1898:  /**
1899:  * This method returns information about a tables indices and statistics.
1900:  * It is returned as a <code>ResultSet</code> with the following columns:
1901:  *
1902:  * <ol>
1903:  * <li>TABLE_CAT - The catalog of the table, which may be <code>null</code>.</li>
1904:  * <li>TABLE_SCHEM - The schema of the table, which may be <code>null</code>.</li>
1905:  * <li>TABLE_NAME - The name of the table.</li>
1906:  * <li>NON_UNIQUE - Are index values non-unique?</li>
1907:  * <li>INDEX_QUALIFIER The index catalog, which may be <code>null</code></li>
1908:  * <li>INDEX_NAME - The name of the index.</li>
1909:  * <li>TYPE - The type of index, which will be one of the constants defined
1910:  * in this interface (<code>tableIndexStatistic</code>,
1911:  * <code>tableIndexClustered</code>, <code>tableIndexHashed</code>, or
1912:  * <code>tableIndexOther</code>).</li>
1913:  * <li>ORDINAL_POSITION - The sequence number of this column in the index.
1914:  * This will be 0 when the index type is <code>tableIndexStatistic</code>.</li>
1915:  * <li>COLUMN_NAME - The name of this column in the index.</li>
1916:  * <li>ASC_OR_DESC - "A" for an ascending sort sequence, "D" for a
1917:  * descending sort sequence or <code>null</code> if a sort sequence is not
1918:  * supported.</li>
1919:  * <li>CARDINALITY - The number of unique rows in the index, or the number
1920:  * of rows in the table if the index type is <code>tableIndexStatistic</code>.</li>
1921:  * <li>PAGES - The number of pages used for the index, or the number of pages
1922:  * in the table if the index type is <code>tableIndexStatistic</code>.</li>
1923:  * <li>FILTER_CONDITION - The filter condition for this index, which may be
1924:  * <code>null</code>.</li>
1925:  * </ol>
1926:  *
1927:  * @param catalog The catalog to retrieve information from, or the empty string
1928:  * to return entities not associated with a catalog, or 
1929:  * <code>null</code> to return information from all catalogs.
1930:  * @param schema The schema to retrieve information from, or the empty string
1931:  * to return entities not associated with a schema.
1932:  * @param tableName The table name to return information for.
1933:  * @param unique <code>true</code> to return only unique indexes, 
1934:  * <code>false</code> otherwise.
1935:  * @param approximate <code>true</code> if data values can be approximations,
1936:  * <code>false</code> otherwise.
1937:  * @return A <code>ResultSet</code> with the requested index information
1938:  * @exception SQLException If an error occurs.
1939:  */
1940:  ResultSet getIndexInfo(String catalog, String schema, String tableName,
1941:  boolean unique, boolean approximate) throws SQLException;
1942: 
1943:  /**
1944:  * This method tests whether or not the datbase supports the specified
1945:  * result type.
1946:  *
1947:  * @param type The desired result type, which is one of the constants
1948:  * defined in <code>ResultSet</code>.
1949:  *
1950:  * @return <code>true</code> if the result set type is supported,
1951:  * <code>false</code> otherwise.
1952:  *
1953:  * @exception SQLException If an error occurs.
1954:  *
1955:  * @see ResultSet
1956:  */
1957:  boolean supportsResultSetType(int type) throws SQLException;
1958: 
1959:  /**
1960:  * This method tests whether the specified result set type and result set
1961:  * concurrency type are supported by the database.
1962:  *
1963:  * @param type The desired result type, which is one of the constants
1964:  * defined in <code>ResultSet</code>.
1965:  * @param concurrency The desired concurrency type, which is one of the
1966:  * constants defined in <code>ResultSet</code>.
1967:  * @return <code>true</code> if the result set type is supported,
1968:  * <code>false</code> otherwise.
1969:  * @exception SQLException If an error occurs.
1970:  * @see ResultSet
1971:  */
1972:  boolean supportsResultSetConcurrency(int type, int concurrency)
1973:  throws SQLException;
1974: 
1975:  /**
1976:  * This method tests whether or not the specified result set type sees its
1977:  * own updates.
1978:  *
1979:  * @param type The desired result type, which is one of the constants
1980:  * defined in <code>ResultSet</code>.
1981:  * @return <code>true</code> if the result set type sees its own updates,
1982:  * <code>false</code> otherwise.
1983:  * @exception SQLException If an error occurs.
1984:  * @see ResultSet
1985:  */
1986:  boolean ownUpdatesAreVisible(int type) throws SQLException;
1987: 
1988:  /**
1989:  * This method tests whether or not the specified result set type sees its
1990:  * own deletes.
1991:  *
1992:  * @param type The desired result type, which is one of the constants
1993:  * defined in <code>ResultSet</code>.
1994:  * @return <code>true</code> if the result set type sees its own deletes,
1995:  * <code>false</code> otherwise.
1996:  * @exception SQLException If an error occurs.
1997:  * @see ResultSet
1998:  */
1999:  boolean ownDeletesAreVisible(int type) throws SQLException;
2000: 
2001:  /**
2002:  * This method tests whether or not the specified result set type sees its
2003:  * own inserts.
2004:  *
2005:  * @param type The desired result type, which is one of the constants
2006:  * defined in <code>ResultSet</code>.
2007:  * @return <code>true</code> if the result set type sees its own inserts,
2008:  * <code>false</code> otherwise.
2009:  * @exception SQLException If an error occurs.
2010:  * @see ResultSet
2011:  */
2012:  boolean ownInsertsAreVisible(int type) throws SQLException;
2013: 
2014:  /**
2015:  * This method tests whether or not the specified result set type sees 
2016:  * updates committed by others.
2017:  *
2018:  * @param type The desired result type, which is one of the constants
2019:  * defined in <code>ResultSet</code>.
2020:  * @return <code>true</code> if the result set type sees other updates,
2021:  * <code>false</code> otherwise.
2022:  * @exception SQLException If an error occurs.
2023:  * @see ResultSet
2024:  */
2025:  boolean othersUpdatesAreVisible(int type) throws SQLException;
2026: 
2027:  /**
2028:  * This method tests whether or not the specified result set type sees 
2029:  * deletes committed by others.
2030:  *
2031:  * @param type The desired result type, which is one of the constants
2032:  * defined in <code>ResultSet</code>.
2033:  * @return <code>true</code> if the result set type sees other deletes,
2034:  * <code>false</code> otherwise.
2035:  * @exception SQLException If an error occurs.
2036:  * @see ResultSet
2037:  */
2038:  boolean othersDeletesAreVisible(int type) throws SQLException;
2039: 
2040:  /**
2041:  * This method tests whether or not the specified result set type sees 
2042:  * inserts committed by others.
2043:  *
2044:  * @param type The desired result type, which is one of the constants
2045:  * defined in <code>ResultSet</code>.
2046:  * @return <code>true</code> if the result set type sees other inserts,
2047:  * <code>false</code> otherwise.
2048:  * @exception SQLException If an error occurs.
2049:  * @see ResultSet
2050:  */
2051:  boolean othersInsertsAreVisible(int type) throws SQLException;
2052: 
2053:  /**
2054:  * This method tests whether or not the specified result set type can detect
2055:  * a visible update by calling the <code>rowUpdated</code> method.
2056:  *
2057:  * @param type The desired result type, which is one of the constants
2058:  * defined in <code>ResultSet</code>.
2059:  * @return <code>true</code> if the result set type can detect visible updates
2060:  * using <code>rowUpdated</code>, <code>false</code> otherwise.
2061:  * @exception SQLException If an error occurs.
2062:  * @see ResultSet
2063:  */
2064:  boolean updatesAreDetected(int type) throws SQLException;
2065: 
2066:  /**
2067:  * This method tests whether or not the specified result set type can detect
2068:  * a visible delete by calling the <code>rowUpdated</code> method.
2069:  *
2070:  * @param type The desired result type, which is one of the constants
2071:  * defined in <code>ResultSet</code>.
2072:  * @return <code>true</code> if the result set type can detect visible deletes
2073:  * using <code>rowUpdated</code>, <code>false</code> otherwise.
2074:  * @exception SQLException If an error occurs.
2075:  * @see ResultSet
2076:  */
2077:  boolean deletesAreDetected(int type) throws SQLException;
2078:  
2079:  /**
2080:  * This method tests whether or not the specified result set type can detect
2081:  * a visible insert by calling the <code>rowUpdated</code> method.
2082:  *
2083:  * @param type The desired result type, which is one of the constants
2084:  * defined in <code>ResultSet</code>.
2085:  * @return <code>true</code> if the result set type can detect visible inserts
2086:  * using <code>rowUpdated</code>, <code>false</code> otherwise.
2087:  * @exception SQLException If an error occurs.
2088:  * @see ResultSet
2089:  */
2090:  boolean insertsAreDetected(int type) throws SQLException;
2091: 
2092:  /**
2093:  * This method tests whether or not the database supports batch updates.
2094:  *
2095:  * @return <code>true</code> if batch updates are supported,
2096:  * <code>false</code> otherwise.
2097:  * @exception SQLException If an error occurs.
2098:  */
2099:  boolean supportsBatchUpdates() throws SQLException;
2100: 
2101:  /**
2102:  * This method returns the list of user defined data types in use. These
2103:  * are returned as a <code>ResultSet</code> with the following columns:
2104:  *
2105:  * <ol>
2106:  * <li>TYPE_CAT - The catalog name, which may be <code>null</code>.</li>
2107:  * <li>TYPE_SCEHM - The schema name, which may be <code>null</code>.</li>
2108:  * <li>TYPE_NAME - The user defined data type name.</li>
2109:  * <li>CLASS_NAME - The Java class name this type maps to.</li>
2110:  * <li>DATA_TYPE - A type identifier from <code>Types</code> for this type.
2111:  * This will be one of <code>JAVA_OBJECT</code>, <code>STRUCT</code>, or
2112:  * <code>DISTINCT</code>.</li>
2113:  * <li>REMARKS - Comments about this data type.</li>
2114:  * </ol>
2115:  *
2116:  * @param catalog The catalog to retrieve information from, or the empty string
2117:  * to return entities not associated with a catalog, or <code>null</code>
2118:  * to return information from all catalogs.
2119:  * @param schemaPattern The schema to retrieve information from, or the
2120:  * empty string to return entities not associated with a schema.
2121:  * @param typePattern The type name pattern to match.
2122:  * @param types The type identifier patterns (from <code>Types</code>) to
2123:  * match.
2124:  * @return A <code>ResultSet</code> with the requested type information
2125:  * @exception SQLException If an error occurs.
2126:  */
2127:  ResultSet getUDTs(String catalog, String schemaPattern, String
2128:  typePattern, int[] types) throws SQLException;
2129: 
2130:  /**
2131:  * This method returns the <code>Connection</code> object that was used
2132:  * to generate the metadata in this object.
2133:  *
2134:  * @return The connection for this object.
2135:  * @exception SQLException If an error occurs.
2136:  */
2137:  Connection getConnection() throws SQLException;
2138: 
2139:  /**
2140:  * This method tests whether the databse supports savepoints.
2141:  * 
2142:  * @return <code>true</code> if the database supports savepoints,
2143:  * <code>false</code> if it does not.
2144:  * @exception SQLException If an error occurs.
2145:  * @see Savepoint
2146:  * @since 1.4
2147:  */
2148:  boolean supportsSavepoints() throws SQLException;
2149: 
2150:  /**
2151:  * This method tests whether the database supports named parameters.
2152:  * 
2153:  * @return <code>true</code> if the database supports named parameters,
2154:  * <code>false</code> if it does not.
2155:  * @exception SQLException If an error occurs.
2156:  * @since 1.4
2157:  */
2158:  boolean supportsNamedParameters() throws SQLException;
2159: 
2160:  /**
2161:  * This method tests whether the database supports returning multiple
2162:  * <code>ResultSet</code>S from a <code>CallableStatement</code> at once.
2163:  * 
2164:  * @return <code>true</code> if the database supports returnig multiple
2165:  * results at once, <code>false</code> if it does not.
2166:  * @exception SQLException If an error occurs.
2167:  * @since 1.4
2168:  */
2169:  boolean supportsMultipleOpenResults() throws SQLException;
2170: 
2171:  /**
2172:  * @since 1.4
2173:  */
2174:  boolean supportsGetGeneratedKeys() throws SQLException;
2175: 
2176:  /**
2177:  * @since 1.4
2178:  */
2179:  ResultSet getSuperTypes(String catalog, String schemaPattern,
2180:  String typePattern) throws SQLException;
2181: 
2182:  /**
2183:  * @since 1.4
2184:  */
2185:  ResultSet getSuperTables(String catalog, String schemaPattern,
2186:  String tablePattern) throws SQLException;
2187: 
2188:  /**
2189:  * @since 1.4
2190:  */
2191:  ResultSet getAttributes(String catalog, String schemaPattern, String
2192:  typePattern, String attributePattern) throws SQLException;
2193: 
2194:  /**
2195:  * This method tests if the database supports the specified holdability type.
2196:  * Valid values for this parameter are specified in the
2197:  * <code>ResultSet</code> class.
2198:  * 
2199:  * @param holdability The holdability type to test.
2200:  * @return <code>true</code> if the database supports the holdability type,
2201:  * <code>false</code> if it does not.
2202:  * @exception SQLException If an error occurs.
2203:  * @see ResultSet
2204:  * @since 1.4
2205:  */
2206:  boolean supportsResultSetHoldability(int holdability)
2207:  throws SQLException;
2208: 
2209:  /**
2210:  * This method returns the default holdability type of <code>ResultSet</code>S
2211:  * retrieved from this database. The possible values are specified in the
2212:  * <code>ResultSet</code> class.
2213:  * 
2214:  * @return The default holdability type.
2215:  * @exception SQLException If an error occurs.
2216:  * @since 1.4
2217:  */
2218:  int getResultSetHoldability() throws SQLException;
2219: 
2220:  /**
2221:  * This method returns the major version number of the database.
2222:  * 
2223:  * @return The major version number of the database.
2224:  * @exception SQLException If an error occurs.
2225:  * @since 1.4
2226:  */
2227:  int getDatabaseMajorVersion() throws SQLException;
2228: 
2229:  /**
2230:  * This method returns the minor version number of the database.
2231:  * 
2232:  * @return The minor version number of the database.
2233:  * @exception SQLException If an error occurs.
2234:  * @since 1.4
2235:  */
2236:  int getDatabaseMinorVersion() throws SQLException;
2237: 
2238:  /**
2239:  * This method returns the major version number of the JDBC driver.
2240:  * 
2241:  * @return The major version number of the JDBC driver.
2242:  * @exception SQLException If an error occurs.
2243:  * @since 1.4
2244:  */
2245:  int getJDBCMajorVersion() throws SQLException;
2246: 
2247:  /**
2248:  * This method returns the minor version number of the JDBC driver.
2249:  * 
2250:  * @return The minor version number of the database.
2251:  * @exception SQLException If an error occurs.
2252:  * @since 1.4
2253:  */
2254:  int getJDBCMinorVersion() throws SQLException;
2255: 
2256:  /**
2257:  * @since 1.4
2258:  */
2259:  int getSQLStateType() throws SQLException;
2260: 
2261:  /**
2262:  * @since 1.4
2263:  */
2264:  boolean locatorsUpdateCopy() throws SQLException;
2265: 
2266:  /**
2267:  * @since 1.4
2268:  */
2269:  boolean supportsStatementPooling() throws SQLException;
2270: }
Overview Package Class Use Source Tree Index Deprecated About
GNU Classpath (0.95)

AltStyle によって変換されたページ (->オリジナル) /