Spec-Zone .ru
спецификации, руководства, описания, API
|
Отметьте: MySQL и DB Java в настоящий момент не поддерживают RowId
Интерфейс JDBC. Следовательно, никакой учебный пример JDBC не доступен, чтобы демонстрировать функции, описанные в этом разделе.
A RowId
объект представляет адрес строке в таблице базы данных. Отметьте, однако, что ROWID
тип не является стандартным типом SQL. ROWID
значения могут быть полезными, потому что они обычно - самый быстрый способ получить доступ к единственной строке и уникальны, идентифицирует для строк в таблице. Однако, недопустимо использовать a ROWID
оцените как первичный ключ таблицы. Например, если Вы удаляете определенную строку из таблицы, база данных могла бы повторно присвоить ROWID
оцените строке, вставленной позже.
Следующие темы затрагиваются:
Получите a java.sql.RowId
объект, вызывая методы метода get определяется в интерфейсах ResultSet
и CallableStatement
. RowId
объект, который возвращается, является неизменным объектом, который можно использовать для последующих отсылок в качестве уникального идентификатора к строке. Следующее является примером вызова ResultSet.getRorId
метод:
java.sql.RowId rowId_1 = rs.getRowId(1);
Можно установить 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
объект с соединением с различным источником данных.
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; } }