|
Spec-Zone .ru
спецификации, руководства, описания, API
|
A JoinRowSet реализация позволяет Вам создавать SQL JOIN между RowSet объекты, когда они не соединяются с источником данных. Это важно, потому что это сохраняет издержки необходимости создать одно или более соединений.
Следующие темы затрагиваются:
JoinRowSet интерфейс является подынтерфейсом CachedRowSet взаимодействуйте через интерфейс и таким образом наследовал возможности a CachedRowSet объект. Это означает это a JoinRowSet объект является разъединенным RowSet возразите и может работать, всегда не будучи соединенным с источником данных.
A JoinRowSet объект служит держателем SQL JOIN. Следующая строка шоу кода, чтобы создать a JoinRowSet объект:
JoinRowSet jrs = new JoinRowSetImpl();
Переменная jrs ничего не содержит до RowSet объекты добавляются к этому.
Отметьте: Альтернативно, можно использовать конструктора от JoinRowSet реализация Вашего драйвера JDBC. Однако, реализации RowSet интерфейс будет отличаться от ссылочной реализации. У этих реализаций будут различные имена и конструкторы. Например, Oracle реализация драйвера JDBC JoinRowSet интерфейс называют oracle.jdbc.rowset.OracleJoinRowSet.
Любой RowSet объект может быть добавлен к a JoinRowSet возразите, пока это может быть часть SQL JOIN. A JdbcRowSet объект, который всегда соединяется с его источником данных, может быть добавлен, но обычно он является частью a JOIN работая с источником данных непосредственно вместо того, чтобы стать частью a JOIN будучи добавленным к a JoinRowSet объект. Точка обеспечения a JoinRowSet реализация должна позволить разъединенному RowSet объекты стать частью a JOIN отношение.
Владелец цепочки Перерыва на кофе кофеен хочет получить список кофе, которые он покупает у Acme, Inc. Чтобы сделать это, владелец должен будет получить информацию от двух таблиц, COFFEES и SUPPLIERS. В мире базы данных прежде RowSet технология, программисты отправили бы следующий запрос базе данных:
String query =
"SELECT COFFEES.COF_NAME " +
"FROM COFFEES, SUPPLIERS " +
"WHERE SUPPLIERS.SUP_NAME = Acme.Inc. " +
"and " +
"SUPPLIERS.SUP_ID = COFFEES.SUP_ID";
В мире RowSet технология, можно выполнить тот же самый результат, не имея необходимость отправлять запрос источнику данных. Можно добавить RowSet объекты, содержащие данные в этих двух таблицах к a JoinRowSet объект. Затем, потому что все подходящие данные находятся в JoinRowSet объект, можно выполнить запрос на этом, чтобы получить требуемые данные.
Следующий фрагмент кода от JoinSample.testJoinRowSet создает два CachedRowSet объекты, coffees заполненный с данными от таблицы COFFEES, и suppliers заполненный с данными от таблицы SUPPLIERS. coffees и suppliers объекты должны сделать соединение с базой данных, чтобы выполнить их команды и быть заполненными с данными, но после того, как это делается, они не должны повторно соединиться снова, чтобы сформировать a JOIN.
coffees = new CachedRowSetImpl();
coffees.setCommand("SELECT * FROM COFFEES");
coffees.setUsername(settings.userName);
coffees.setPassword(settings.password);
coffees.setUrl(settings.urlString);
coffees.execute();
suppliers = new CachedRowSetImpl();
suppliers.setCommand("SELECT * FROM SUPPLIERS");
suppliers.setUsername(settings.userName);
suppliers.setPassword(settings.password);
suppliers.setUrl(settings.urlString);
suppliers.execute();
Взгляд на SUPPLIERS таблица, можно видеть, что у Acme, Inc. есть идентификационный номер 101. Кофе в таблице COFFEES с идентификационным номером поставщика 101 являются колумбийскими и Colombian_Decaf. Присоединение информации от обеих таблиц возможно, потому что у этих двух таблиц есть столбец SUP_ID in common. В JDBC RowSet технология, SUP_ID, столбец тот, на который JOIN базируется, вызывается столбцом соответствия.
Каждый RowSet объект, добавленный к a JoinRowSet у объекта должны быть столбец соответствия, столбец на который JOIN базируется. Есть два способа установить столбец соответствия для a RowSet объект. Первый путь состоит в том, чтобы передать столбец соответствия к JoinRowSet метод addRowSet, как показано в следующей строке кода:
jrs.addRowSet(coffees, 2);
Эта строка кода добавляет coffees CachedRowSet к jrs объект и наборы второй столбец coffees (SUP_ID) как столбец соответствия. Строка кода, возможно, также использовала имя столбца скорее что номер столбца.
jrs.addRowSet(coffees, "SUP_ID");
В этой точке, jrs имеет только coffees в этом. Следующее RowSet объект, добавленный к jrs должен будет быть в состоянии сформировать a JOIN с coffees, который является истиной suppliers потому что у обеих таблиц есть столбец SUP_ID. Следующая строка кода добавляет suppliers к jrs и устанавливает столбец SUP_ID как столбец соответствия.
jrs.addRowSet(suppliers, 1);
Теперь jrs содержит a JOIN между coffees и suppliers от которого владелец может получить имена кофе, предоставленных Acme, Inc. Поскольку код не устанавливал тип JOIN, jrs содержит внутреннее объединение, которое является значением по умолчанию. Другими словами, строка в jrs комбинирует строку в coffees и строка в suppliers. Это сдерживает столбцы coffees плюс столбцы в suppliers для того, строк, в который значение в COFFEES.SUP_ID столбец соответствует значение в SUPPLIERS.SUP_ID. Следующий код распечатывает имена кофе, предоставленных Acme, Inc., где String supplierName равно Acme, Inc. Отметьте, что это возможно потому что столбец SUP_NAME, который является от suppliers, и COF_NAME, который является от coffees, теперь оба включаются в JoinRowSet объект jrs.
System.out.println("Coffees bought from " + supplierName + ": ");
while (jrs.next()) {
if (jrs.getString("SUP_NAME").equals(supplierName)) {
String coffeeName = jrs.getString(1);
System.out.println(" " + coffeeName);
}
}
Это произведет вывод, подобный следующему:
Coffees bought from Acme, Inc.:
Colombian
Colombian_Decaf
JoinRowSet интерфейс обеспечивает константы для того, чтобы они установили тип JOIN это будет сформировано, но в настоящий момент единственный тип, который реализуется, JoinRowSet.INNER_JOIN.