|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Эта страница описывает все таблицы, используемые в учебном руководстве 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 таблица:
COF_NAME: Хранит имя кофе. Содержит значения с типом SQL VARCHAR с максимальной длиной 32 символов. Поскольку имена отличаются для каждого типа проданного кофе, имя однозначно определяет определенный кофе и служит первичным ключом.SUP_ID: Хранит число, идентифицирующее поставщика кофе. Содержит значения с типом SQL INTEGER. Это определяется как внешний ключ, это ссылается на столбец SUP_ID в SUPPLIERS таблица. Следовательно, DBMS осуществит то каждое значение в этом столбце соответствия одно из значений в соответствующем столбце в SUPPLIERS таблица.PRICE: Хранит стоимость кофе на фунт. Содержит значения с типом SQL FLOAT потому что это должно содержать значения с десятичными точками. (Отметьте, что денежные значения обычно были бы сохранены в типе SQL DECIMAL или NUMERIC, но из-за различий среди DBMSs и избегать несовместимости с более ранними версиями JDBC, учебное руководство использует более стандартный тип FLOAT.)SALES: Хранит число фунтов кофе, проданного в течение текущей недели. Содержит значения с типом SQL INTEGER.TOTAL: Хранит число фунтов кофе, проданного до настоящего времени. Содержит значения с типом SQL INTEGER. 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 таблица:
SUP_ID: Хранит число, идентифицирующее поставщика кофе. Содержит значения с типом SQL INTEGER. Это - первичный ключ в этой таблице.SUP_NAME: Хранит имя поставщика кофе.STREET, CITY, STATE, и ZIP: Эти столбцы хранят адрес поставщика кофе.Таблица 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 таблица:
WAREHOUSE_ID: Хранит число, идентифицирующее склад.COF_NAME: Хранит имя определенного типа кофе.SUP_ID: Хранит число, идентифицирующее поставщика.QUAN: Хранит число, указывающее на количество доступного кофе.DATE: Хранит значение метки времени, указывающее последнее время, строка была обновлена.Таблица 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 таблица:
ITEM_ID: Хранит число, идентифицирующее элемент.ITEM_NAME: Хранит имя элемента.SUP_ID: Хранит число, идентифицирующее поставщика.QUAN: Хранит число, указывающее на количество того доступного элемента.DATE: Хранит значение метки времени, указывающее последнее время, строка была обновлена.Таблица 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 таблица:
STORE_ID: Хранит число, идентифицирующее кофейню. Это указывает, между прочим, на состояние, в котором располагается кофейня. Значение, начинающееся 10, например, средства, что состоянием является Калифорния. STORE_ID значения, начинающиеся 32, указывают на Орегон, и те, которые начинают 33, указывают на штат Вашингтон.CITY: Хранит имя города, в котором располагается кофейня.COFFEE: Хранит число, указывающее на количество проданного кофе.MERCH: Хранит число, указывающее на количество проданного кофе.TOTAL: Хранит число, указывающее на общую сумму кофе и проданных товаров.Таблица DATA_REPOSITORY хранит URL что справочники и другие данные интереса для Перерыва на кофе. Сценарий populate_tables.sql не добавляют никакие данные к этой таблице. Следующее описывает каждый из столбцов в этой таблице:
DOCUMENT_NAME: Хранит строку, которая идентифицирует URL.URL: Хранит URL.Можно составить таблицы с Муравьем Apache или API JDBC.
Чтобы составить таблицы, используемые с учебным примером кода, выполните следующую команду в каталоге <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 цель.
Следующий метод, 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.
В дополнение к составлению таблиц, используемых этим учебным руководством, командой 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);
Следующий метод, 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();
}
}
}