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