Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab5 (БД).docx
Скачиваний:
11
Добавлен:
01.03.2016
Размер:
37.33 Кб
Скачать

Министерство образования и науки, молодежи и спорта Украины Черниговский национальный технологический университет Кафедра программной инженерии

Лабораторная работа №5

Создание программного приложения для работы с базой данных работы с базой данных

Выполнил студент гр. ПИ – 111 Сахненко К.В.

Проверил Бычко В.А.

ЧНТУ-2014

Лабораторная работа №5 Создание программного приложения для работы с базой данных работы с базой данных

5.1 Цель работы

Средствами eclipse создать программное приложение, которое обеспечивает работу с базой данных (БД). Изучить способы подключения к БД, представления данных из БД, выполнения простых и параметрических запросов, выполнения команд.

5.2 Выполнение работы

Задание:

Непараметрические запросы SQL-запросы Select

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

2. По каждому типу работ получить данные о текущем состоянии выполненного объема в процентном выражении от общего запланированного объема и количества использованных материалов в процентном выражении от общей потребности.

3. Получить список «критических работ», т.е. работ, которые не были завершены к указанной самой поздней дате окончания. Данные вывести по убыванию величины задержки завершения.

Параметрических SQL-запросы Select

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

2. Получить список работ, завершенных исполнителем до заданной даты (вводятся как параметры).

Исходный текст:

Main.java

package stu.bd.lab5;

import java.awt.EventQueue;

public class Main {

private MyBD database = new Lab5 ();

private JFrame frame;

private JPanel panel;

private JLabel lblNewLabel;

private JTextField sql;

private JButton Do;

private JButton btn_Insert;

private JButton btn_Update;

private JButton btn_Delete;

private JScrollPane scrollPane;

private JTable table;

private final JPanel panel_1 = new JPanel();

private JLabel lblStatus;

private JTextField status;

private JButton button1;

private JButton button2;

private JButton button3;

private JButton button4;

private JButton button;

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

Main window = new Main();

window.frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public Main() {

initialize();

}

private void initialize() {

frame = new JFrame();

frame.setBounds(100, 100, 465, 300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(new BorderLayout(0, 0));

panel = new JPanel();

frame.getContentPane().add(panel, BorderLayout.NORTH);

GridBagLayout gbl_panel = new GridBagLayout();

gbl_panel.columnWidths = new int[];

gbl_panel.rowHeights = new int[];

gbl_panel.columnWeights = new double[];

gbl_panel.rowWeights = new double[];

panel.setLayout(gbl_panel);

lblNewLabel = new JLabel("SQL");

GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();

gbc_lblNewLabel.anchor = GridBagConstraints.WEST;

gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);

gbc_lblNewLabel.gridx = 0;

gbc_lblNewLabel.gridy = 0;

panel.add(lblNewLabel, gbc_lblNewLabel);

sql = new JTextField();

sql.setText("SELECT * FROM project_type");

GridBagConstraints gbc_sql = new GridBagConstraints();

gbc_sql.insets = new Insets(0, 0, 5, 5);

gbc_sql.fill = GridBagConstraints.HORIZONTAL;

gbc_sql.gridx = 1;

gbc_sql.gridy = 0;

panel.add(sql, gbc_sql);

sql.setColumns(10);

Do = new JButton("Ok");

Do.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.sendRequest(sql.getText());

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Not connect to database");

}

});

GridBagConstraints gbc_Do = new GridBagConstraints();

gbc_Do.insets = new Insets(0, 0, 5, 5);

gbc_Do.gridx = 2;

gbc_Do.gridy = 0;

panel.add(Do, gbc_Do);

btn_Insert = new JButton("Insert");

btn_Insert.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.sendInsert(sql.getText());

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Connect to database first");

}

});

button21 = new JButton("4");

button21.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.zapros21(sql.getText());

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Not connect to database");

}

});

GridBagConstraints gbc_button21 = new GridBagConstraints();

gbc_button21.insets = new Insets(0, 0, 5, 0);

gbc_button21.gridx = 3;

gbc_button21.gridy = 0;

panel.add(button21, gbc_button21);

GridBagConstraints gbc_btn_Insert = new GridBagConstraints();

gbc_btn_Insert.insets = new Insets(0, 0, 5, 5);

gbc_btn_Insert.gridx = 0;

gbc_btn_Insert.gridy = 1;

panel.add(btn_Insert, gbc_btn_Insert);

btn_Update = new JButton("Update");

btn_Update.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.sendUpdate(sql.getText());

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Connect to database first");

}

});

GridBagConstraints gbc_btn_Update = new GridBagConstraints();

gbc_btn_Update.insets = new Insets(0, 0, 5, 5);

gbc_btn_Update.gridx = 1;

gbc_btn_Update.gridy = 1;

panel.add(btn_Update, gbc_btn_Update);

btn_Delete = new JButton("Delete");

btn_Delete.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.sendDelete(sql.getText());

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Not connect to database");

}

});

GridBagConstraints gbc_btn_Delete = new GridBagConstraints();

gbc_btn_Delete.insets = new Insets(0, 0, 5, 5);

gbc_btn_Delete.gridx = 2;

gbc_btn_Delete.gridy = 1;

panel.add(btn_Delete, gbc_btn_Delete);

button1 = new JButton("1");

button1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.zapros1();

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Not connect to database");

}

});

button = new JButton("22");

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.zapros22(sql.getText());

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Not connect to database");

}

});

GridBagConstraints gbc_button = new GridBagConstraints();

gbc_button.insets = new Insets(0, 0, 5, 0);

gbc_button.gridx = 3;

gbc_button.gridy = 1;

panel.add(button, gbc_button);

GridBagConstraints gbc_button1 = new GridBagConstraints();

gbc_button1.insets = new Insets(0, 0, 0, 5);

gbc_button1.gridx = 0;

gbc_button1.gridy = 2;

panel.add(button1, gbc_button1);

button2 = new JButton("2");

button2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.zapros2();

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Not connect to database");

}

});

GridBagConstraints gbc_button2 = new GridBagConstraints();

gbc_button2.insets = new Insets(0, 0, 0, 5);

gbc_button2.gridx = 1;

gbc_button2.gridy = 2;

panel.add(button2, gbc_button2);

button3 = new JButton("3");

button3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if ((database!=null) && (database.checkConnection()!=false)){

database.zapros3();

if (database.showResult()!=null){

QueryTableModel model = new QueryTableModel();

model.getModel(database.showResult());

table.setModel(model);

}

status.setText(database.getStatus());

}else

status.setText("Not connect to database");

}

});

GridBagConstraints gbc_button3 = new GridBagConstraints();

gbc_button3.insets = new Insets(0, 0, 0, 5);

gbc_button3.gridx = 2;

gbc_button3.gridy = 2;

panel.add(button3, gbc_button3);

frame.getContentPane().add(panel_1, BorderLayout.SOUTH);

GridBagLayout gbl_panel_1 = new GridBagLayout();

gbl_panel_1.columnWidths = new int[]{0, 0, 0};

gbl_panel_1.rowHeights = new int[]{0, 0};

gbl_panel_1.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};

gbl_panel_1.rowWeights = new double[]{0.0, Double.MIN_VALUE};

panel_1.setLayout(gbl_panel_1);

lblStatus = new JLabel("status");

GridBagConstraints gbc_lblStatus = new GridBagConstraints();

gbc_lblStatus.anchor = GridBagConstraints.EAST;

gbc_lblStatus.insets = new Insets(0, 0, 0, 5);

gbc_lblStatus.gridx = 0;

gbc_lblStatus.gridy = 0;

panel_1.add(lblStatus, gbc_lblStatus);

status = new JTextField();

status.setEditable(false);

GridBagConstraints gbc_status = new GridBagConstraints();

gbc_status.fill = GridBagConstraints.HORIZONTAL;

gbc_status.gridx = 1;

gbc_status.gridy = 0;

panel_1.add(status, gbc_status);

status.setColumns(10);

scrollPane = new JScrollPane();

frame.getContentPane().add(scrollPane, BorderLayout.CENTER);

table = new JTable();

scrollPane.setViewportView(table);

}

}

MyBD.java

package ua.cn.stu;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import javax.xml.crypto.Data;

public class MyBD {

private String connectionStatus = new String();

private Connection connection = null;

private String url = "jdbc:postgresql://127.0.0.1:5432/zarplata";

private ResultSet result;

private String user = "postgres";

private String password = "955742";

public MyBD() {

connect();

}

public void connect() {

try { // load the driver

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

}

catch( Exception e ) { // problem loading driver,

// class not exist?

e.printStackTrace( );

return;

}

try {

connection=DriverManager.getConnection(url,user,password);

System.out.println("Connection successful!");

//далее идут любые запросы к БД или обновления

}

catch( SQLException e ) {

e.printStackTrace( );

}

/*finally {

if( connection != null ) {

try { connection.close( ); }

catch(SQLException e) {e.printStackTrace();}

}

}*/

}

private void setStatus(String status) {

connectionStatus = status;

}

public String getStatus() {

return connectionStatus;

}

public void sendRequest(String sql) {

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

result = s.executeQuery(sql);

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus("Unable to send statement");

return;

}

}

public ResultSet showResult() {

if (result == null) {

setStatus("No result found");

}

return result;

}

public boolean checkConnection() {

if (connection == null) {

return false;

}

try {

if (connection.isClosed()) {

return false;

}

} catch (SQLException e) {

e.printStackTrace();

}

return true;

}

public void sendUpdate(String value) {

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

s.executeUpdate("UPDATE sotrudnik fio SET fio='update' WHERE nomer_dela="+value);

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus(e.getLocalizedMessage());

return;

}

}

public void sendDelete(String value) {

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

s.execute("DELETE FROM sotrudnik WHERE nomer_dela= '" + value + "'");

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus(e.getLocalizedMessage());

return;

}

}

public void sendInsert(String value) {

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

s.executeUpdate("INSERT INTO list_of_work" + "VALUES('" + value

+ "', 'insert', '3', '4', '5','2014-03-11','7','8','9','10','11','12')");

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus(e.getLocalizedMessage());

return;

}

}

public void stajRequest(String staj) {

Date now = new Date();

SimpleDateFormat formater= new SimpleDateFormat("ddMMyyyy_HHmmss");

String s2 = formater.format(now);

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

s.execute("CREATE TABLE Table_"+s2+" (name character varying(30), V_of_work integer)");

s.executeUpdate("INSERT INTO Table_"+s2+" (SELECT name, type_of_work FROM project WHERE list_of_work="+list+")");

result = s.executeQuery("SELECT name, type_of_work FROM Table_"+s2);

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus("Unable to send statement");

return;

}

}

public void zapros1(){

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

String sql = "SELECT name, type_of_work, V_of_work, \"yderganie_%\", type_of_work FROM list_of_work, work WHERE V_of_work.data=(SELECT MAX(data) FROM work) ORDER BY project, name";

result = s.executeQuery(sql);

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus("Unable to send statement");

return;

}

}

public void zapros2(){

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

String sql = "SELECT list_of_work, SUM(V_work - type_of_work – date_of_end), AVG(premialnie) FROM project, type_of_work GROUP BY work";

result = s.executeQuery(sql);

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus("Unable to send statement");

return;

}

}

public void zapros3(String value){

try {

if ((connection.isClosed()) || (connection == null)) {

setStatus("Connection wasn't establised");

return;

}

Statement s = connection.createStatement();

result = s.executeQuery("SELECT name, type_of_work, date_of_end, work, list_of_work FROM project, V_of_work WHERE name='"+value+"' ORDER BY type_of_work ");

setStatus("Statement was sent");

} catch (SQLException e) {

setStatus("Unable to send statement");

return;

}

}

QueryTableModel.java

package ua.cn.stu;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.util.Vector;

import javax.swing.table.AbstractTableModel;

public class QueryTableModel extends AbstractTableModel {

Vector cache; // will hold String[] objects . . .

int colCount;

String[] headers;

public QueryTableModel() {

cache = new Vector();

}

public String getColumnName(int i) {

return headers[i];

}

public int getColumnCount() {

return colCount;

}

public int getRowCount() {

return cache.size();

}

public Object getValueAt(int row, int col) {

return ((String[]) cache.elementAt(row))[col];

}

// All the real work happens here; in a real application,

// we'd probably perform the query in a separate thread.

public void getModel(ResultSet rs) {

cache = new Vector();

try {

// Execute the query and store the result set and its metadata

ResultSetMetaData meta = rs.getMetaData();

colCount = meta.getColumnCount();

// Now we must rebuild the headers array with the new column names

headers = new String[colCount];

for (int h = 1; h <= colCount; h++) {

headers[h - 1] = meta.getColumnName(h);

}

// and file the cache with the records from our query. This would

// not be

// practical if we were expecting a few million records in response

// to our

// query, but we aren't, so we can do this.

while (rs.next()) {

String[] record = new String[colCount];

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

record[i] = rs.getString(i + 1);

}

cache.addElement(record);

}

fireTableChanged(null); // notify everyone that we have a new table.

} catch (Exception e) {

cache = new Vector(); // blank it out and keep going.

e.printStackTrace();

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]