Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / TehnoDom.doc
Скачиваний:
36
Добавлен:
10.02.2016
Размер:
356.35 Кб
Скачать

4.Программная реализация.

Для написания интерфейса я воспользовалась языком программирования JAVA, причину этого, а также осуществление доступа к нашей базе я объяснила во введении.

Т. к. весь программный код не возможно представить в данном документе по причине его довольно большого объема, то мы рассмотрим лишь важные для нас части (связывающие базу с оболочкой).

Метод для подключения:

public boolean setConn(String url,String user,String pass) {

URL = "jdbc:postgresql:"+ url;

username = user;

password = pass;

Conn();

return isConn;

}

public void Conn() {

try {

Class.forName("org.postgresql.Driver");

} catch (Exception e) {

System.out.println("Подключайся же!!!");

}

try {

con = DriverManager.getConnection(URL, username, password);

stmt = con.createStatement();

isConn = true;

} catch (Exception e) {

System.err.println("Проблемы соединения с " + URL);

isConn = false;

}

}

Метод исполнения запроса

private void execSQL(int mode) {

Conn();

try {

if(mode == 1){

rs = stmt.executeQuery(query);

}else{

stmt.executeUpdate(query);

}

} catch (Exception e) {

System.out.println("Ошибка:" + e);

System.out.println(query);

}finally{

query = "";

CloseConn();

}

}

Метод получения результатов запроса

private void getData(){

vkRow.clear();

try {

ResultSetMetaData rsmd1 = rs.getMetaData();

colCount = rsmd1.getColumnCount();

for (int i = 0; i < colCount; i++) {

vkRow.addElement(rsmd1.getColumnName(i+1));

}

rowCount = 1;

while (rs.next()) {

rowCount++;

for (int k = 0; k < colCount; k++) {

vkRow.addElement(rs.getObject(k + 1));

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

Далее представим запросы и подзапросы:

Получение данных о товаре

public Vector seeTovar() {

query = "select * from tovar " + parametr;

execSQL(1);

getData();

return vkRow;

}

Получение данных о непроданном товаре

public Vector seeNepr(){

query = " select T.nazvanie_tovara, T.model, F.nazvanie_firmi from tovar T, firma_proizvoditelya F where id_tovara not in(select distinct id_tovara from prodaja) and T.id_firmi=F.nomer_firmi" + parametr;

execSQL(1);

getData();

return vkRow;

}

Получение данных о доходах от продажи

public Vector seeDoh(){

query = " select distinct sum(P.kolichestvo_prodaj*T.tsena) from tovar T, prodaja P where P.id_tovara=T.id_tovara" + parametr;

execSQL(1);

getData();

return vkRow;

}

Получение данных о максимальной выгоде по товарам от продажи

public Vector seeVig(){

query = " select max(maximum), nazvanie_tovara from (select max(T.tsena * P.kolichestvo_prodaj)as maximum,T.nazvanie_tovara from tovar T,prodaja P where T.id_tovara=P.id_tovara group by 2) as B group by 2 order by 1 desc " + parametr;

execSQL(1);

getData();

return vkRow;

}

Получение предварительной прибыли от имеющихся товаров

public Vector seePred(){

query = " select sum(kolichestvo_imeushihsa*tsena) from tovar " + parametr;

execSQL(1);

getData();

return vkRow;

}

Удаление поля из сущности tovar, где в качестве параметра могут выступать как код товара, так и его модель

public void delTovar(String condition) {

query = "delete from tovar where " + condition;

execSQL(2);

}

Т.к. я организовала показ всех атрибутов для каждой сущности, то соответственно будут использованы следующие запросы:

public Vector seePost() {

query = "select * from postavshik " + parametr;

execSQL(1);

getData();

return vkRow;

}

public Vector seeTip() {

query = "select * from tip_tovara " + parametr;

execSQL(1);

getData();

return vkRow;

}

public Vector seeFirm() {

query = "select * from firma_proizvoditelya " + parametr;

execSQL(1);

getData();

return vkRow;

}

public Vector seeZakupka(){

query = "select Z.id_zakupki ,Z.data_zakupki,T.nazvanie_tovara, T.model ,Z.tsena_zakupki ,Z.kolichestvo, P.firma_postavshika from zakupka Z,tovar T, postavshik P where (Z.id_tovara=T.id_tovara) and (P.id_postavshika=Z.id_postavki)";

execSQL(1);

getData();

return vkRow;

}

Также осуществляется ввод данных после нажатия соответствующих кнопок.

Ввод данных в tovar:

public void insTovar(Vector<String> insData) {

query = "insert into tovar values (";

for (int i = 0; i < insData.size(); i++) {

if (i != insData.size() - 1) {

if (i == 0 || i == 1 || i == 2 || i == 6 || i == 7) {

query += insData.get(i) + ", ";

} else

query += "'" + insData.get(i) + "', ";

} else {

query += insData.get(i) + ")";

}

}

execSQL(2);

insData.clear();

}

Ввод данных в prodaja:

query = "insert into prodaja values (";

for (int i = 0; i < insData.size(); i++) {

if (i != insData.size() - 1) {

if (i == 0 || i == 1 || i == 2) {

query += insData.get(i) + ", ";

} else

query += "'" + insData.get(i) + "', ";

} else {

query += "'"+insData.get(i) + "'"+")";

}

}

execSQL(2);

insData.clear();

}

Также есть возможность вводить любой из запросов в соответствующей панели

public Vector setSql(String zapros) {

query = zapros;

execSQL(1);

getData();

return vkRow;

}

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

Соседние файлы в папке БД