Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api



Скачать 160.37 Kb.
Дата25.07.2014
Размер160.37 Kb.
ТипСборник упражнений








Курс JVA-005
JDBC API 2

Сборник упражнений

(версия 1.0 от 12.10.2006)



Учебный курс JVA-005 JDBC API 2.
Цель курса:

Подготовка Java-разработчиков по основам Java Database Connectivity API 2.


Продолжительность курса:

8 ак. часов – базовые темы, 13 ак. часов – с дополнительными темами.


Авторы курса:

Евгений Кривошеев (EKrivosheev@luxoft.com), компания Люксофт (www.luxoft.ru).



Содержание.


Спецификация упражнений. 4



Спецификация упражнений.





POINTBASE_HOME

C:\bea92\weblogic92\common\eval\pointbase

POINTBASE_DRIVERS_JAR

POINTBASE_HOME\lib\pbclient51.jar

POINTBASE_DRIVER

com.pointbase.jdbc.jdbcUniversalDriver

DB_NAME

STAPLERZDB

SCHEMA

PBPUBLIC

DBVIZ_HOME

C:\Program Files\DbVisualizer-5.0

DB_URL

jdbc:pointbase:server://127.0.0.1:9092/staplerzDB

Разработка упражнений ведется в среде BEA Weblogic Workshop 9.2. Эта среда базируется на Eclipse 3, только лишь добавляя элементы, упрощающие работу с сервером приложений BEA Weblogic 9.2, в остальном же – это полноценный Eclipse.

Для запуска Workshop запустите ярлык в меню Start ОС Windows (Start→Programs→BEA Products→Workshop for Weblogic Platform) или ярлык на рабочем столе.

Подготовлено два рабочих пространства Eclipse (workspaces) – заготовки упражнений (c:\work\labs) и готовые решения (c:\work\solutions). По умолчанию работа ведется с заготовками, которые слушатели дорабатывают в соответствии с задачами упражнения. В случае затруднений при самостоятельной работе можно переключится в workspace готовых упражнений.



Упражнение 1
Знакомство с
Lab Environment.

Цели упражнения.


Знакомство с СУБД PointBase 5 и консолью PointBase.

Знакомство с инструментом DBVisualizer.

Знакомство с тестовой базой данных.

Описание.


СУБД PointBase – полноценная современная СУБД, поддерживающая основные возможности корпоративных СУБД: транзакций, ссылочной целостности, хранимых процедур, триггеров, схем. Что это за понятия? Сама СУБД написана целиком на Java. Она установлена в POINTBASE_HOME.

PointBase может работать в двух режимах – server и embedded. В серверном режиме (server) СУБД работает как отдельный процесс в рамках собственной JVM и обслуживает запросы по выделенному порту ОС. Во встроенном режиме (embedded) СУБД работает как часть java-приложения в рамках его JVM, она доступна только ему.

В состав PointBase входят jdbc-драйвера для обоих режимов. Их можно найти в архиве C:\bea92\weblogic92\common\eval\pointbase\lib\pbclient51.jar (POINTBASE_DRIVERS_JAR). Для серверного режима следует пользоваться драйером com.pointbase.jdbc.jdbcUniversalDriver (POINTBASE_DRIVER).

Для запуска PointBase следует запустить командный файл POINTBASE_HOME\tools\startPointBase.cmd. Для удобства ярлык запуска выведен на рабочий стол. PointBase запускается в консольном окне Windows, куда направляется весь вывод СУБД. Не закрывайте это консольное окно. Это приведет к некорректному останову СУБД, что может привести к потере данных. Для останова следует ввести в консоли PointBase команду quit или q.

В тестовой базе данных STAPLERZDB (DB_NAME) организованы 2 схемы: pbpublic, pointbase. Что такое схема? Пароли пользователей схем совпадает с именем. Мы будем работать со схемой pbpublic (SCHEMA).

В состав PointBase входит консоль – средство доступа к данным СУБД. Она позволяет проводить основные операции над БД – DDL и DML. Что это такое? Консоль может быть использована для подключения к любой СУБД, для которой существует JDBC-драйвер. Следует помнить, что драйвер СУБД, к которой производится подключение, должен находиться по classpath консоли. Для СУБД PointBase это выполняется по умолчанию.

Консоль имеет графический интерфейс. Для её запуска следует запустить командный файл POINTBASE_HOME\tools\startPointBaseConsole.cmd. Далее появится окно ввода параметров соединения – имя класса драйвера, адрес базы, имя пользователя БД и пароль. По умолчанию уже заполнены поля имени класса драйвера, адреса и имени пользователя. Мы будем работать со схемой pbpublic, поэтому следует ввести соответствующее имя пользователя и пароль.

В случае успешного соединения консоль отобразит в левой области дерево ресурсов данной базы, справа – данные.

Еще одной консолью доступа к БД является инструмент DBVisualizer. Он установлен в папку C:\Program Files\DbVisualizer-5.0 (DBVIZ_HOME). Он предоставляет стандартный набор возможностей, но имеет удобный интерфейс и возможность визуализации схемы БД.

Для его запуска следует запустить исполняемый модуль DBVIZ_HOME\dbvis.exe. Для удобства ярлык запуска вынесен на рабочий стол.

В процессе работы в первую очередь необходимо зарегистрировать драйвер нужной СУБД во внутреннем DriverManager инструмента. Для этого следует выбрать пункт меню Tools→Driver Manager. Далее необходимо в левой области указать, для какой СУБД регистрируется драйвер (в нашем случае PointBase Server) и jar-архив с классом(ами) драйверов – в правой области. В случае нескольких драйверов в выбранном архиве следует указать, какой из них будет использовать DBVisualizer. В нашем случае это com.pointbase.jdbc.jdbcUniversalDriver (POINTBASE_DRIVER). DriverManager больше не нужен.

Для подключения к БД следует указать параметры соединения. Для этого можно воспользоваться мастером (Tools→Connection Vizard) или щелкнуть правой кнопкой мыши на области Connections и выбрать пункт Create Database Connection. Значения параметров соединения можно посмотреть в спецификации.

Основные параметры соединения:


  • Имя (Alias) – под этим именем инструмент сохранит введенные настройки для дальнейшего использования

  • Driver – выбор драйвера СУБД из списка зарегистрированных

  • DataBase URL – адрес БД

  • Userid и Password – учетная запись пользователя

В случае успешного соединения инструмент отобразит дерево ресурсов БД в левой области. Обратите внимание на вкладку References.

Следует ознакомиться с таблицами схемы pbpublic.


Задачи упражнения.


Проанализируйте содержимое таблиц и на основе этих данных обозначьте связи между таблицами на следующей схеме:

Подробное руководство.

Часть 1. Знакомство с СУБД PointBase 5 и консолью PointBase.


  1. Запустите СУБД PointBase с помощью командного файла или ярлыка на рабочем столе. Появится консольное окно с выводом СУБД.

  2. Убедитесь, что PointBase успешно запущена. В этом случае в консольном окне появится строка вида:

Server started, listening on port 9092, display level: 2 ...

  1. Сверните консольное окно (не закрывайте).

  2. Запустите консоль PointBase. В диалоговом окне ввода параметров соединения введите следующие значения (пароль совпадает с именем пользователя):





  1. Откуда консоль знает месторасположение jar-архива с драйвером?

  2. Какие в данной БД определены таблицы? Триггеры? Представления? Хранимые процедуры?

  3. Какие поля определены у таблицы Users?





  1. Щелкните правой кнопкой мыши на таблице Users и выберите пункт Count Rows In …

  2. Сколько записей в этой таблице?

  3. Щелкните правой кнопкой мыши на таблице CATALOG_ITEMS и выберите пункт Select * From

  4. Сколько записей в этой таблице?

  5. Как будет выглядеть аналогичный SQL-запрос? Попробуйте.

  6. Закройте консоль

Часть 2. Знакомство с инструментом DBVisualizer.


  1. Запустите инструмент с помощью командного файла или ярлыка на рабочем столе.

  2. Далее следует зарегистрировать JDBC-драйвер для PointBase. Почему мы этого не делали в случае PointBase Console?

  3. Для регистрации драйвера следует запустить DriverManager (пункт меню Tools→Driver Manager):





  1. В качестве СУБД в левой области выберите Pointbase Server.

  2. В правой области Driver File Paths выберите User Specified и щелкните иконку папки. В окне выбора файлов перейдите в папку с jar-архивом драйверов:





  1. В этой папке выберите jar-файл с драйверами PointBase и щелкните OK:





  1. Jar-архив будет просканирован и будут найдены все jdbc-драйвера в нем.

  2. Следует выбрать драйвер, который будет использоваться инструментом по умолчанию:





  1. Driver Manager можно закрыть.

  2. Далее следует задать параметры соединения с СУБД. Для этого щелкните правой кнопкой мыши на области Connections и выберите пункт Create Database Connection.

  3. Далее следует ввести параметры соединения с СУБД. (Можно щелкнуть на URL-формат для ускорения ввода строки соединения):





  1. Щелкните Connect.

  2. В случае успешного соединения в левой области в окне структуры БД отобразятся объекты данной БД.

  3. Выберите схему PBPUBLIC и щелкните на вкладке References:





  1. Дважды щелкните в данном графическом представлении на таблицу USERS.

  2. В открывшемся окне можно получить исчерпывающую информацию о таблице, в том числе просмотреть содержимое (вкладка DATA):





  1. Щелкните правой кнопкой мыши на таблице CATALOG_ITEMS и выберите пункт меню Script Object to SQL Editor и далее Select…





  1. Откроется редактор SQL с набранной заготовкой запроса. Щелкните кнопку Run или нажмите Ctrl-Enter.

  2. Результат выборки отобразится в нижнем окне.

  3. C помощью описанных инструментов выполните задачу упражнения.

  4. Закройте DBVisualizer.

  5. В случае необходимости можно остановить PointBase. Для этого в консольном окне СУБД введите quit или q. Пока этого делать не следует, рабочая СУБД понадобится нам в следующих упражнениях.

Упражнение 2
Установка соединения с БД.

Цели упражнения.


Локализовать JDBC-драйвер.

Установить соединение с необходимой БД.


Описание.


Для установки соединения с БД необходимо:

  • Локализовать JDBC-драйвер – указать его имя (сам класс драйвера или jar-архив с ним должен располагаться по classpath java-приложения)

  • Знать DB-URL

  • Знать учетную запись пользователя.

Все эти параметры можно найти в спецификации упражнений.

После работы с БД необходимо закрыть соединение.

Для того, чтобы класс драйвера был доступен java-приложению, jar-архив с ним должен находится в classpath этого приложения. В среде Eclipse classpath приложений настраивается в конфигурациях запуска. Раздел Classpath→User Entries→Add External JARs.

Для удобства работы с БД в используемой среде разработки существует специальный view – Databse Explorer (Window→Show View→Other→Data→Database Explorer). Активируйте его и создайте соединение с рабочей БД. Это упростит отладку и разработку.


После этого можно щелкнуть правой кнопкой мыши на выбранной таблице и активировать Data Output View (пункт меню Data→Sample Contents), где наблюдать содержимое таблицы.


Задачи упражнения.


Настроить Database Explorer View на рабочую БД.

Разработать java-приложение, где установить соединение с рабочей БД. Критерием успешной установки соединения является отсутствие исключений. После работы с БД в приложении необходимо закрыть соединение.


Подробное руководство.

Часть 1. Настройка проекта.


  1. Запустите Workshop.

  2. При запуске выберите workspace с упражнениями.

  3. Откройте проект Lab02. Для этого щелкните на нем правой кнопкой мыши и выберите пункт меню Open Project.

  4. Создайте для него конфигурацию запуска. Для этого в выпадающем меню кнопки Run выберите пункт меню Run… Дважды щелкните на группе конфигураций Java Application. Появится новая конфигурация запуска. Убедитесь в правильности значений параметров конфигурации.

  5. Добавьте jar-архив с JDBC-драйвером в classpath проекта. Для этого щелкните вкладку Classpath конфигурации запуска. Выберите элемент User Entries. Далее щелкните кнопку Add External Jars… В окне поиска файлов найдите jar-архив с драйверами СУБД PointBase. Указанный jar-архив появится в списке элементов classpath проекта.

  6. Настройте Database Explorer View. Для этого сначала выведите его. Window→Show View→Other→Data→Database Explorer.

  7. Далее настройте соединение с тестовой БД. Для этого щелкните правой кнопкой мыши на папке Connections в Database Explorer View. Выберите пункт New Connection. В диалоговом окне введите параметры соединения с тестовой БД. Протестируйте соединение, щелкнув кнопку Test Connection. В случае успешного теста завершите создание соединения.

  8. Откройте настроенное соединение и в дереве найдите таблицу CATALOG_ITEMS. Далее следует щелкнуть правой кнопкой мыши на выбранной таблице и активировать Data Output View (пункт меню Data→Sample Contents). Проанализируйте содержимое таблицы.

  9. В дереве структуры проекта в папке src откройте заготовку упражнения – исходный модуль java DBConnect.java

  10. Второй вариант добавления jar-архива в classpath – добавить его в classpath проекта. Для этого щелкните правой кнопкой мыши на проекте и выберите пункт Properties. В открывшемся окне найдите в дереве свойств Java Build Path. Выберите вкладку Libraries. Далее можно добавить необходимые jar-архивы с помощью кнопки Add External JARs.

Часть 2. Cоединение с БД в java-приложении.


  1. Загрузите класс драйвера СУБД PointBase методом Class.forName(drivername). Как можно загрузить драйвер административным путем?

  2. Получите соединение с БД методом DriverManager.getConnection(dburl)

  3. Закройте соединение методом Connection.close()

  4. Запустие программу. Что произошло?

  5. Добавьте в метод getConnection() учетную запись пользователя.

  6. Запустие программу. Что произошло?

Упражнение 3
Работа с запросами на обновление.

Цели упражнения.


Научиться использовать запросы DML:

  • Вставка записей

  • Модификация записей

  • Удаление записей

В вариантах:

  • Простого запроса

  • Подготовленного запроса

Научиться вызывать хранимые процедуры БД.

Описание.


Исходный текст хранимой процедуры можно найти в модуле StoredRoutines.java.

Задачи упражнения.


  1. Реализовать указание класса драйвера не в исходном тексте приложения

  2. Проанализировать поля таблиц USERS и ORDERS, их семантику

  3. Вставить запись в таблицу USERS со значениями полей «Vasya Pupkin», «Moscow», «vasya», «vasya», «2» с помощью простого запроса

  4. Разобраться с получением сгенерированного идентификатора записи

  5. Удалить вставленную запись с использованием данного ID с помощью простого запроса

  6. Изменить имя пользователя с ID «1» на значение «On» с помощью подготовленного запроса. Параметрами запроса выступают имя пользователя и его ID.

  7. Сравнить производительность подготовленных и простых запросов с помощью приложения TestPrepStmtmsSpeed.java

  8. Вызвать хранимую процедуру CountAllOrdersSum(in String Status, out Double Sum) и вывести сумму всех доставленных (shipped) заказов

Подробное руководство.

Часть 1. Настройка проекта.


  1. В новом проекте не действуют настройки предыдущего проекта. Поэтому необходимо заново настраивать classpath проекта, включать в него jar-архив с драйверами PointBase в конфигурации запуска. Для удобства это уже сделано.

  2. Откройте модуль TestInsert.java. Обратите внимание, что в нем отсутствует этап загрузки класса драйвера. В таком случае, где этот этап реализован?

Часть 2. Простые запросы на вставку и удаление.


  1. Откройте заготовку TestInsert.java

  2. Откройте соединение с тестовой БД

  3. Создайте запрос с помощью метода Сonnection.createStatement()

  4. Осуществите вызов SQL-запроса вставки записи в таблицу USERS с помощью метода Statement.executeUpdate()

  5. Код получения значения сгенерированного ключа уже написан

  6. Создайте еще один запрос с помощью метода Сonnection.createStatement()

  7. Осуществите вызов SQL-запроса удаления предыдущей записи в таблице USERS с помощью метода Statement.executeUpdate()

  8. Закройте соединение с тестовой БД

  9. Запустите программу и проверьте правильность её выполнения, проанализировав данные в таблице

Часть 3. Подготовленный запрос на обновление.


  1. Откройте заготовку TestUpdate.java

  2. Откройте соединение с тестовой БД

  3. Создайте подготовленное выражение обновления записи в таблице USERS с помощью метода Сonnection.prepareStatement()

  4. Установите значения параметров userid и name с помощью методов Statement.setXXX()

  5. Запустите запрос с помощью метода Statement.executeUpdate()

  6. Закройте соединение с тестовой БД

  7. Запустите программу и проверьте правильность её выполнения, проанализировав данные в таблице

  8. Откройте модуль TestPrepStmtmsSpeed.java

  9. Проанализируйте его логику. В чем она заключается?

  10. Запустите его. Каковы результаты?

Часть 4. Вызов хранимой процедуры.


  1. Откройте заготовку TestSPCall.java

  2. Откройте соединение с тестовой БД

  3. Подготовьте запрос на выполнение хранимой процедуры CountAllOrdersSum(in String Status, out Double Sum) с помощью метода Сonnection.prepareCall()

  4. Установите значение первого параметра в «Shipped» с помощью метода Statement.setString()

  5. Зарегистрируйте второй out-параметр типа Double с помощью метода Statement.registerOutParameter()

  6. Вызовите процедуру с помощью метода Statement.execute()

  7. Выведите в консоль значение второго out-параметра с помощью метода Statement.getDouble()

  8. Закройте соединение с тестовой БД

  9. Запустите программу и проверьте правильность её выполнения, проанализировав данные в таблице

Упражнение 4
Работа с выборками.

Цели упражнения.


Научиться использовать выборки из БД с помощью простых и подготовленных выражений.

Задачи упражнения.


  1. Вывести всех пользователей (users) с помощью простого запроса, выводимые поля – имя пользователя и адрес.

  2. Вывести все доставленные (shipped) заказы (orders) с указанием пользователя (user) с помощью подготовленного выражения.

Подробное руководство.

Часть 1. Использование выборок с помощью простого запроса.


  1. Откройте заготовку SelectUsers.java

  2. Создайте простой запрос

  3. При запуске этого запроса методом Statement.executeQuery() он вернет выборку типа ResultSet. Запрос должен заключаться в выборке полей «имя» и «адрес» всех записей таблицы USERS

  4. Проанализируйте выборку в цикле по условию ResultSet.next()

  5. В теле цикла выводите поля записей с помощью методов ResultSet.getXXX(). Как можно указать желаемое поле?

  6. Закройте соединение с тестовой БД

  7. Запустите программу и проверьте правильность её выполнения, проанализировав данные в таблице

Часть 2. Использование выборок с помощью подготовленного запроса.


  1. Откройте заготовку SelectUserOrders.java

  2. Создайте подготовленный запрос. Запрос должен заключаться в выборке имени пользователя и статуса заказа из связанных таблиц USERS и ORDERS. Параметром запроса будет статус заказа. Создать подготовленный запрос можно методом Сonnection.prepareStatement()

  3. Установите у запроса параметр в значение «Shipped» методом PreparedStatement.setString()

  4. Запустите запрос методом PreparedStatement.executeQuery(), он вернет выборку типа ResultSet

  5. Проанализируйте выборку в цикле по условию ResultSet.next()

  6. В теле цикла выводите поля записей с помощью методов ResultSet.getXXX()

  1. Закройте соединение с тестовой БД

  1. Запустите программу и проверьте правильность её выполнения, проанализировав данные в таблице

Упражнение 5
Обработка ошибок.

Цели упражнения.


Научиться корректно обрабатывать исключения и предупреждения при работе с СУБД.

Описание.


Практически все методы JDBC API выбрасывают исключения типа java.sql.SQLException. Основная особенность этих исключений – организация в цепочки.

Помимо исключений, JDBC API определяет понятие warning – класс java.sql.SQLWarning. Отличие предупреждения от исключения заключается в том, что предупреждения не останавливают программу. Предупреждения так же организуют цепочки.



Обратите внимание, что в предлагаемой заготовке класс драйвера загружается в теле метода, это значит, что mfr же необходимо обрабатывать исключение ClassNotFoundException.

Задачи упражнения.


  1. На базе упражнения с выборкой всех пользователей с доставленными заказами сформировать модуль, где будут корректно обрабатываться исключения.

  2. На базе того же модуля ввести обработку предупреждений.

Подробное руководство.

Часть 1. Обработка исключений.


  1. Откройте заготовку HandleErrors.java. Почему так много синтаксических ошибок?

  2. Охватите фукнциональный кусок кода блоком try-catch-finally.

  3. В блоках catch cледует обрабатывать три типа исключений. Какие?

  4. Оформите обработку классов исключений ClassNotFoundException, SQLException и Exception. В каком порядке?

  5. В качестве логики обработки используйте вывод исключения в консоль (для упрощения). Какие еще варианты обработки Вы можете предложить?

  6. Не следует забывать о том, что исключения образуют цепочки, поэтому в блоке обработки необходимо организовать цикл по цепочке исключений и обработать все исключения в цепочке. Получить следущее исключение в цепочке можно методом SQLException.getNextException().

  7. Вынесите закрытие соединения в блок finally. Почему?

  8. Внутри блока finally охватите метод закрытия соединения блоком try-catch. Зачем?

  9. Запустите программу и проверьте правильность её выполнения.

Часть 2. Обработка предупреждений.


  1. В том же модуле HandleErrors.java введите блок обработки предупреждений. Где это лучше сделать?

  2. В данном примере лучше обрабатывать предупреждения в конце защищенного модуля try. Какие есть еще варианты?

  3. Получить предупреждение можно методом Сonnection.getWarnings().

  4. Логику обработки реализуйте так же выводом информации о предупреждении в консоль.

  5. Не следует забывать о том, что предупреждения образуют цепочки, поэтому в блоке обработки необходимо организовать цикл по их цепочке и обработать все предупреждения в цепочке. Получить следущее предупреждение в цепочке можно методом SQLWarning.getNextWarning().

  6. Запустите программу и проверьте правильность её выполнения.

Упражнение 6
Транзакции в
JDBC API.

Цели упражнения.


Научиться управлять транзакциями и их уровнями изоляции в JDBC API.

Задачи упражнения.


  1. Разобраться с логикой транзакций классов T1 и T2 в пакете dirtyreads.

  2. Необходимо сэмулировать ситуацию конфликта транзакций и рассмотреть результаты для двух уровней изоляции транзакции T1: TRANSACTION_READ_UNCOMMITTED и TRANSACTION_SERIALIZABLE .

Подробное руководство.

Часть 1. Эмуляция конфликтной ситуации.


  1. Откройте модули T1.java и T2.java.

  2. Проанализируйте их логику. Зачем необходима задержка? По каким данным будет конфликт?

  3. Запустите модули в последовательности T2, T1. Каков результат работы T1? Почему?

  4. Измените уровень изоляции в T1 на TRANSACTION_SERIALIZABLE.

  5. Повторите запуск. Каково теперь поведение T1? Почему?



Похожие:

Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconСборник упражнений по детской речи пособие для студентов
Данный сборник упражнений как раз и даёт студенту, изучающему данный курс, выполняющему курсовую работу, работающему над дипломом...
Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconСборник упражнений для студентов математического факультета пединститута
В сборник включены упражнения по дискретной математике. Основная цель упражнений – отработка основных понятий дискретной математики,...
Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconСборник упражнений по практической фонетике русского языка. В. Търново, 1968, с. 184 245. Пенева С. Ж. Сборник упражнений по орфографии. В. Търново, 1969, с. 61 95, с. 219 228
Пенева С. Ж. Сборник упражнений по практической фонетике русского языка. В. Търново, 1968, с. 184 – 245
Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconПодключение к базе данных с помощью jdbc
Подключение Java-программы к реляционной субд с помощью jdbc выполняется в три этапа
Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconСборник упражнений для школьников (без таблиц). Ю. Б. Голицынский
Примечание: красным цветом указаны номера упражнений по сборнику «Грамматика: Ключи к упражнениям.» 4-е изд., Спб.: Каро, 2003
Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconН. И. Лобачевского Факультет: вмк специальность: Прикладная математика и информатика 1 курс Лектор: Перов А. А. Записал: студент гр. Введение I. Учебный курс
Учебный курс истории отечества, содержание, функции, методология, принципы изучения
Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconСеминар в Оулу, 27. 11 12. 2006 Место: Учебный центр Хиетасаари, Учебный центр похто время: 27. ноября декабря 2006 г

Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconУчебный курс «Отечественна»
Планы семинарских занятий по курсу «Отечественная история» 1 семестр 2006/2007 учебного года. Лектор
Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconСборник лексико-грамматических упражнений

Сборник упражнений (версия 0 от 12. 10. 2006) Учебный курс jva-005 jdbc api iconСборник упражнений по английскому языку

Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org