Используя Объекты RowId (Учебные руководства Java™> JDBC (ТМ) Доступ к базе данных> Основы JDBC)


След: JDBC (ТМ) Доступ к базе данных
Урок: Основы JDBC
Используя Объекты RowId
Домашняя страница > JDBC (ТМ) Доступ к базе данных > Основы JDBC

Используя Объекты RowId

Отметьте: MySQL и DB Java в настоящий момент не поддерживают RowId Интерфейс JDBC. Следовательно, никакой учебный пример JDBC не доступен, чтобы демонстрировать функции, описанные в этом разделе.

A RowId объект представляет адрес строке в таблице базы данных. Отметьте, однако, что ROWID тип не является стандартным типом SQL. ROWID значения могут быть полезными, потому что они обычно - самый быстрый способ получить доступ к единственной строке и уникальны, идентифицирует для строк в таблице. Однако, недопустимо использовать a ROWID оцените как первичный ключ таблицы. Например, если Вы удаляете определенную строку из таблицы, база данных могла бы повторно присвоить ROWID оцените строке, вставленной позже.

Следующие темы затрагиваются:

Получение Объектов RowId

Получите a java.sql.RowId объект, вызывая методы метода get определяется в интерфейсах ResultSet и CallableStatement. RowId объект, который возвращается, является неизменным объектом, который можно использовать для последующих отсылок в качестве уникального идентификатора к строке. Следующее является примером вызова ResultSet.getRorId метод:

java.sql.RowId rowId_1 = rs.getRowId(1);

Используя Объекты RowId

Можно установить a RowId возразите в качестве параметра в параметризованном PreparedStatement объект:

Connection conn = ds.getConnection(username, password);
PreparedStatement ps = conn.prepareStatement(
    "INSERT INTO BOOKLIST" +
    "(ID, AUTHOR, TITLE, ISBN) " +
    "VALUES (?, ?, ?, ?)");
ps.setRowId(1, rowId_1);

Можно также обновить столбец с определенным RowId объект в обновляемом ResultSet объект:

ResultSet rs = ...
rs.next();
rs.updateRowId(1, rowId_1);

A RowId объектное значение обычно не переносимо между источниками данных и должно быть рассмотрено как определенное для источника данных при использовании набора или метода обновления в PreparedStatement и ResultSet объекты, соответственно. Это поэтому нецелесообразно, чтобы получить a RowId объект от a ResultSet объект с соединением с одним источником данных и затем пытается использовать то же самое RowId объект в несвязанном ResultSet объект с соединением с различным источником данных.

Время жизни Законности RowId

A RowId объект допустим, пока идентифицированная строка не удаляется и время жизни RowId объект является в пределах границ времени жизни, определенного этим источником данных для RowId.

Определить время жизни RowId объекты Вашей базы данных или источника данных, вызовите метод DatabaseMetaData.getRowIdLifetime. Это возвращает значение a RowIdLifetime перечислимый тип данных. Следующий метод JDBCTutorialUtilities.rowIdLifeTime возвращает время жизни RowId объекты:

public static void rowIdLifetime(Connection conn)
    throws SQLException {

    DatabaseMetaData dbMetaData = conn.getMetaData();
    RowIdLifetime lifetime = dbMetaData.getRowIdLifetime();

    switch (lifetime) {
        case ROWID_UNSUPPORTED:
            System.out.println("ROWID type not supported");
            break;

        case ROWID_VALID_FOREVER:
            System.out.println("ROWID has unlimited lifetime");
            break;

        case ROWID_VALID_OTHER:
            System.out.println("ROWID has indeterminate lifetime");
            break;

        case ROWID_VALID_SESSION:
            System.out.println(
                "ROWID type has lifetime that " +
                "is valid for at least the " +
                "containing session");
            break;

        case ROWID_VALID_TRANSACTION:
            System.out.println(
                "ROWID type has lifetime that " +
                "is valid for at least the " +
                "containing transaction");
            break;
    }
}

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Используя Объекты Канала передачи данных
Следующая страница: Используя Хранимые процедуры



Spec-Zone.ru - all specs in one place