Spec-Zone .ru
спецификации, руководства, описания, API
След: JDBC (ТМ) Доступ к базе данных
Урок: Основы JDBC
Установка Таблиц
Домашняя страница > JDBC (ТМ) Доступ к базе данных > Основы JDBC

Установка Таблиц

Эта страница описывает все таблицы, используемые в учебном руководстве JDBC и как создать их:

Таблица КОФЕ

COFFEES таблица хранит информацию о кофе, доступных для продажи в Перерыве на кофе:

COF_NAME SUP_ID PRICE SALES TOTAL
Колумбиец 101 7.99 0 0
French_Roast 49 8.99 0 0
Кофе эспрессо 150 9.99 0 0
Colombian_Decaf 101 8.99 0 0
French_Roast_Decaf 49 9.99 0 0

Следующее описывает каждый из столбцов в COFFEES таблица:

Таблица ПОСТАВЩИКОВ

SUPPLIERS хранит информацию о каждом из поставщиков:

SUP_ID SUP_NAME STREET CITY STATE ZIP
101 Acme, Inc. 99 Маркет-Стрит Groundsville CA 95199
49 Превосходящий Кофе 1 Место Стороны Мендосино CA 95460
150 Высота 100 Маршрутов Кофе Луга CA 93966

Следующее описывает каждый из столбцов в SUPPLIERS таблица:

Таблица COF_INVENTORY

Таблица COF_INVENTORY хранит информацию о количестве кофе, сохраненного на каждом складе:

WAREHOUSE_ID COF_NAME SUP_ID QUAN DATE_VAL
1234 House_Blend 49 0 2006_04_01
1234 House_Blend_Decaf 49 0 2006_04_01
1234 Колумбиец 101 0 2006_04_01
1234 French_Roast 49 0 2006_04_01
1234 Кофе эспрессо 150 0 2006_04_01
1234 Colombian_Decaf 101 0 2006_04_01

Следующее описывает каждый из столбцов в COF_INVENTORY таблица:

Таблица MERCH_INVENTORY

Таблица MERCH_INVENTORY хранит информацию о количестве товаров некофе в запасе:

ITEM_ID ITEM_NAME SUP_ID QUAN DATE
00001234 Cup_Large 00456 28 2006_04_01
00001235 Cup_Small 00456 36 2006_04_01
00001236 Блюдце 00456 64 2006_04_01
00001287 Графин 00456 12 2006_04_01
00006931 Графин 00927 3 2006_04_01
00006935 PotHolder 00927 88 2006_04_01
00006977 Салфетка 00927 108 2006_04_01
00006979 Полотенце 00927 24 2006_04_01
00004488 CofMaker 08732 5 2006_04_01
00004490 CofGrinder 08732 9 2006_04_01
00004495 EspMaker 08732 4 2006_04_01
00006914 Поваренная книга 00927 12 2006_04_01

Следующее описывает каждый из столбцов в MERCH_INVENTORY таблица:

Таблица COFFEE_HOUSES

Таблица COFFEE_HOUSES расположения хранилищ кофеен:

STORE_ID CITY COFFEE MERCH TOTAL
10023 Мендосино 3450 2005 5455
33002 Сиэтл 4699 3109 7808
10040 SF 5386 2841 8227
32001 Портленд 3147 3579 6726
10042 SF 2863 1874 4710
10024 Сакраменто 1987 2341 4328
10039 Кармель 2691 1121 3812
10041 LA 1533 1007 2540
33005 Олимпия 2733 1550 4283
33010 Сиэтл 3210 2177 5387
10035 SF 1922 1056 2978
10037 LA 2143 1876 4019
10034 San_Jose 1234 1032 2266
32004 Юджин 1356 1112 2468

Следующее описывает каждый из столбцов в COFFEE_HOUSES таблица:

Таблица DATA_REPOSITORY

Таблица DATA_REPOSITORY хранит URL что справочники и другие данные интереса для Перерыва на кофе. Сценарий populate_tables.sql не добавляют никакие данные к этой таблице. Следующее описывает каждый из столбцов в этой таблице:

Составление Таблиц

Можно составить таблицы с Муравьем Apache или API JDBC.

Составление Таблиц с Муравьем Apache

Чтобы составить таблицы, используемые с учебным примером кода, выполните следующую команду в каталоге <JDBC tutorial directory>:

ant setup

Эта команда выполняет несколько целей Муравья, включая следующий, build-tables (от build.xml файл):

<target name="build-tables"
  description="Create database tables">
  <sql
    driver="${DB.DRIVER}"
    url="${DB.URL}"
    userid="${DB.USER}"
    password="${DB.PASSWORD}"
    classpathref="CLASSPATH"
    delimiter="${DB.DELIMITER}"
    autocommit="false" onerror="abort">
    <transaction src=
  "./sql/${DB.VENDOR}/create-tables.sql"/>
  </sql>
</target>

Выборка определяет значения для следующего sql Параметры задачи муравья:

Параметр Описание
driver Полностью определенное имя class Вашего драйвера JDBC. Эта выборка использование org.apache.derby.jdbc.EmbeddedDriver для DB Java и com.mysql.jdbc.Driver для MySQL, Connector/J.
url Соединение с базой данных URL, что Ваш DBMS использование драйвера JDBC, чтобы соединиться с базой данных.
userid Имя допустимого пользователя в Вашем DBMS.
password Пароль пользователя, определенного в userid
classpathref Имя полного пути файла JAR, который содержит class, определенный в driver
delimiter Строка или символ, который разделяет SQL-операторы. Эта выборка использует точку с запятой (;).
autocommit Булево значение; если установлено в false, все SQL-операторы выполняются как одна транзакция.
onerror Действие, чтобы выполнить, когда оператор перестал работать; возможные значения continue, stop, и abort. Значение abort определяет, что, если ошибка происходит, транзакция прерывается.

Выборка хранит значения этих параметров в отдельном файле. Файл типа "build" build.xml получает эти значения с import задача:

<import file="${ANTPROPERTIES}"/>

transaction элемент определяет файл, который содержит SQL-операторы, чтобы выполниться. Файл create-tables.sql содержит SQL-операторы, которые составляют все таблицы, описанные на этой странице. Например, следующая выборка от этого файла составляет таблицы SUPPLIERS и COFFEES:

create table SUPPLIERS
    (SUP_ID integer NOT NULL,
    SUP_NAME varchar(40) NOT NULL,
    STREET varchar(40) NOT NULL,
    CITY varchar(20) NOT NULL,
    STATE char(2) NOT NULL,
    ZIP char(5),
    PRIMARY KEY (SUP_ID));

create table COFFEES
    (COF_NAME varchar(32) NOT NULL,
    SUP_ID int NOT NULL,
    PRICE numeric(10,2) NOT NULL,
    SALES integer NOT NULL,
    TOTAL integer NOT NULL,
    PRIMARY KEY (COF_NAME),
    FOREIGN KEY (SUP_ID)
        REFERENCES SUPPLIERS (SUP_ID));

Отметьте: файл build.xml содержит другую названную цель drop-tables это удаляет таблицы, используемые учебным руководством. setup целевые выполнения drop-tables прежде, чем работать build-tables цель.

Составление Таблиц с API JDBC

Следующий метод, SuppliersTable.createTable, создает SUPPLIERS таблица:

public void createTable() throws SQLException {
    String createString =
        "create table " + dbName +
        ".SUPPLIERS " +
        "(SUP_ID integer NOT NULL, " +
        "SUP_NAME varchar(40) NOT NULL, " +
        "STREET varchar(40) NOT NULL, " +
        "CITY varchar(20) NOT NULL, " +
        "STATE char(2) NOT NULL, " +
        "ZIP char(5), " +
        "PRIMARY KEY (SUP_ID))";

    Statement stmt = null;
    try {
        stmt = con.createStatement();
        stmt.executeUpdate(createString);
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    } finally {
        if (stmt != null) { stmt.close(); }
    }
}

Следующий метод, CoffeesTable.createTable, создает COFFEES таблица:

  public void createTable() throws SQLException {
    String createString =
        "create table " + dbName +
        ".COFFEES " +
        "(COF_NAME varchar(32) NOT NULL, " +
        "SUP_ID int NOT NULL, " +
        "PRICE float NOT NULL, " +
        "SALES integer NOT NULL, " +
        "TOTAL integer NOT NULL, " +
        "PRIMARY KEY (COF_NAME), " +
        "FOREIGN KEY (SUP_ID) REFERENCES " +
        dbName + ".SUPPLIERS (SUP_ID))";

    Statement stmt = null;
    try {
        stmt = con.createStatement();
        stmt.executeUpdate(createString);
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    } finally {
        if (stmt != null) { stmt.close(); }
    }
}

В обоих методах, con a Connection объект и dbName имя базы данных, в которой Вы составляете таблицу.

Выполнить SQL-запрос, такой как определенные String createString, используйте a Statement объект. Создать a Statement объект, вызовите метод Connection.createStatement от существующего Connection объект. Чтобы выполнить SQL-запрос, вызовите метод Statement.executeUpdate.

Все Statement объекты закрываются, когда соединение, которое создало их, закрывается. Однако, это - хорошая практика кодирования, чтобы явно закрыться Statement объекты, как только Вы заканчиваетесь с ними. Это позволяет любые внешние ресурсы, которые оператор использует, чтобы быть сразу выпущенным. Закройте оператор, вызывая метод Statement.close. Поместите этот оператор в a finally гарантировать, что это закрывается, даже если нормальный процесс выполнения программы прерывается потому что исключение (такой как SQLException) бросается.

Отметьте: следует создать SUPPLIERS таблица перед COFFEES потому что COFFEES содержит внешний ключ, SUP_ID это ссылается SUPPLIERS.

Заполнение Таблиц

Точно так же можно вставить данные в таблицы с Муравьем Apache или API JDBC.

Заполнение Таблиц с Муравьем Apache

В дополнение к составлению таблиц, используемых этим учебным руководством, командой ant setup также заполняет эти таблицы. Эта команда выполняет цель Муравья populate-tables, который выполняет сценарий SQL populate-tables.sql.

Следующее является выборкой от populate-tables.sql это заполняет таблицы SUPPLIERS и COFFEES:

insert into SUPPLIERS values(
    49, 'Superior Coffee', '1 Party Place',
    'Mendocino', 'CA', '95460');
insert into SUPPLIERS values(
    101, 'Acme, Inc.', '99 Market Street',
    'Groundsville', 'CA', '95199');
insert into SUPPLIERS values(
    150, 'The High Ground',
    '100 Coffee Lane', 'Meadows', 'CA', '93966');
insert into COFFEES values(
    'Colombian', 00101, 7.99, 0, 0);
insert into COFFEES values(
    'French_Roast', 00049, 8.99, 0, 0);
insert into COFFEES values(
    'Espresso', 00150, 9.99, 0, 0);
insert into COFFEES values(
    'Colombian_Decaf', 00101, 8.99, 0, 0);
insert into COFFEES values(
    'French_Roast_Decaf', 00049, 9.99, 0, 0);

Заполнение Таблиц с API JDBC

Следующий метод, SuppliersTable.populateTable, вставляет данные в таблицу:

public void populateTable() throws SQLException {

    Statement stmt = null;
    try {
        stmt = con.createStatement();
        stmt.executeUpdate(
            "insert into " + dbName +
            ".SUPPLIERS " +
            "values(49, 'Superior Coffee', " +
            "'1 Party Place', " +
            "'Mendocino', 'CA', '95460')");

        stmt.executeUpdate(
            "insert into " + dbName +
            ".SUPPLIERS " +
            "values(101, 'Acme, Inc.', " +
            "'99 Market Street', " +
            "'Groundsville', 'CA', '95199')");

        stmt.executeUpdate(
            "insert into " + dbName +
            ".SUPPLIERS " +
            "values(150, " +
            "'The High Ground', " +
            "'100 Coffee Lane', " +
            "'Meadows', 'CA', '93966')");
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    } finally {
        if (stmt != null) { stmt.close(); }
    }
}

Следующий метод, CoffeesTable.populateTable, вставляет данные в таблицу:

public void populateTable() throws SQLException {

    Statement stmt = null;
    try {
        stmt = con.createStatement();
        stmt.executeUpdate(
            "insert into " + dbName +
            ".COFFEES " +
            "values('Colombian', 00101, " +
            "7.99, 0, 0)");

        stmt.executeUpdate(
            "insert into " + dbName +
            ".COFFEES " +
            "values('French_Roast', " +
            "00049, 8.99, 0, 0)");

        stmt.executeUpdate(
            "insert into " + dbName +
            ".COFFEES " +
            "values('Espresso', 00150, 9.99, 0, 0)");

        stmt.executeUpdate(
            "insert into " + dbName +
            ".COFFEES " +
            "values('Colombian_Decaf', " +
            "00101, 8.99, 0, 0)");

        stmt.executeUpdate(
            "insert into " + dbName +
            ".COFFEES " +
            "values('French_Roast_Decaf', " +
            "00049, 9.99, 0, 0)");
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    } finally {
        if (stmt != null) {
          stmt.close();
        }
    }
}

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

Предыдущая страница: Обработка SQLExceptions
Следующая страница: Получение и Изменение Значений от Наборов результатов