|
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;
}
}