Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package login;
- import javafx.application.Application;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.geometry.Pos;
- import javafx.scene.Scene;
- import javafx.scene.control.*;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.VBox;
- import javafx.stage.Stage;
- import java.sql.*;
- public class Main extends Application {
- // поля для подключения
- private static Connection con;
- private static Statement stmt;
- private static ResultSet rs;
- Label labelPicture = new Label();
- ComboBox<String> cbDataBases;
- Label labelInfo = new Label();
- TextField tfUrl = new TextField();
- TextField tfUser = new TextField();
- PasswordField tfPass = new PasswordField();
- // поля с настройками подключения к БД
- private String URL; // = "jdbc:postgresql://127.0.0.1:5432/testdb2";
- // private static final String URL = "jdbc:mysql://localhost:3306/carsfff";
- private String USER; // = "postgres";
- // private static final String USER = "admin"; // mysql
- private String PASS; // = "root";
- // кнопка вкл/выкл
- ToggleButton btnConn = new ToggleButton(" Connect ");
- // Query connectAndQuery = new Query();
- // класс подключения к БД
- ConnectDB connectDB = new ConnectDB();
- // класс отключения от БД
- Disconnect disconnect = new Disconnect();
- Query query = new Query();
- public static void main(String[] args) {
- launch(args);
- }
- public void start(Stage stage){
- //////////////////////////////////////////////TEST/////////////////////////////////////////////////////////////
- // заполняем TextFild и PasswordField для PostgreSql - сервера
- // tfUrl.setText("jdbc:postgresql://127.0.0.1:5432/testdb2");
- // tfUser.setText("postgres");
- // tfPass.setText("root");
- // заполняем TextFild и PasswordField для Mysql - сервера
- tfUrl.setText("jdbc:mysql://localhost:3306/carsfff");
- tfUser.setText("admin");
- tfPass.setText("root");
- ///////////////////////////////////////////////TEST////////////////////////////////////////////////////////////////
- //считуем значения с TextField и PasswordField
- URL = tfUrl.getText();
- USER = tfUser.getText();
- PASS = tfPass.getText();
- // инициализация переменных URL, USER, PASS
- initUrlUserPass();
- stage.setTitle("Main menu");
- // стиль кнопки из css
- btnConn.setId("btnConnColor");
- // прозрачная подсказка в TestField
- tfUrl.setPromptText(" Enter URL Database");
- tfUser.setPromptText(" Enter username");
- tfPass.setPromptText(" Enter password");
- // задаем размер TestField
- tfUrl.setPrefColumnCount(15);
- tfUser.setPrefColumnCount(15);
- tfPass.setPrefColumnCount(15);
- // создать список типа Observablelist из элементов
- ObservableList<String> basesTypes = FXCollections.observableArrayList("PostgreSqL", "MySqL");
- // создаем комбинироаный список
- cbDataBases = new ComboBox<String>(basesTypes);
- // корневой узел
- VBox root = new VBox();
- // отступ по краям VBox root
- root.setPadding(new Insets(0,0,15,0));
- VBox vBoxTop = new VBox();
- // отступы в vBoxTop
- vBoxTop.setPadding(new Insets(5,0,5,0));
- // промежутки между элементами внутри vBoxTop
- vBoxTop.setSpacing(10);
- vBoxTop.setAlignment(Pos.CENTER);
- vBoxTop.getChildren().add(cbDataBases);
- // добавляем imageViev в vBoxTop
- vBoxTop.getChildren().add(labelPicture);
- VBox vBoxCenter = new VBox();
- // промежутки между элементами внутри vBoxCenter
- vBoxCenter.setSpacing(5);
- // отступы вокруг vBoxCenter
- vBoxCenter.setPadding(new Insets(5, 20, 10, 20));
- // выравниваем все елементы по центру внутры vBoxCenter
- vBoxCenter.setAlignment(Pos.CENTER);
- vBoxCenter.getChildren().addAll( tfUrl, tfUser, tfPass);
- //----------------- ComboBox, Label, переменная для класа ModalWorkTable
- // установить значение по умолчанию в ComboBox "cbDataBases"
- cbDataBases.setValue("MySqL");
- // добавляем в Label картинку
- labelPicture.setGraphic( sizeLabelPicture("MySqL") );
- //передаем имя базы в ModalWorkTable для вывода значка
- ModalWorkTable.setNameSql("MySqL");
- //--------------------
- //обработчик события на кнопку
- btnConn.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent ev) {
- // повторно считуем данные с TextFiel и PasswordField в переменные
- initUrlUserPass();
- // выбираем базу
- if (cbDataBases.getValue().equals("PostgreSqL") &&
- !(btnConn.isSelected()) &&
- URL.contains("postgresql") ){
- // отключаемся от базы
- disconnect.disconMeth(ConnectDB.getConnection());
- labelInfo.setText("PostgreSqL " + disconnect.getMessage() );
- activeInactive(false);
- }
- else if (cbDataBases.getValue().equals("MySqL") &&
- !(btnConn.isSelected())&&
- URL.contains("mysql") ){
- // отключаемся от базы
- disconnect.disconMeth(ConnectDB.getConnection());
- labelInfo.setText("Mysql " + disconnect.getMessage());
- // делаем активной Combobox, TextField выводим соответствующий текст и цвет button
- // отключаемся от базы
- activeInactive(false);
- }
- // подключаемся к PostgreSqL
- else if ( (cbDataBases.getValue()).equals("PostgreSqL") &&
- btnConn.isSelected() && URL.contains("postgresql") ){
- // подключаемся к базе
- connectDB.conDB(URL, USER, PASS);
- // флаг подключения
- if (ConnectDB.getFlag()){
- // передаем поток Connection в Query
- query.setCon(ConnectDB.getConnection());
- //вызов второго модального окна
- //////////////////////////////////////////////////////////
- ModalWorkTable.testTable();
- // сообщение внизу проги об подключении
- labelInfo.setText(cbDataBases.getValue()+ " " + connectDB.getMessage() );
- // делаем не активной Combobox, TextField, делаем соответствующий текст и цвет button
- // подключаемся к базе
- activeInactive(true);
- }
- else{
- // кнопку переводим в режим "невыбраной"
- btnConn.setSelected(false);
- labelInfo.setId("labelInfoDisconColor");
- labelInfo.setText(cbDataBases.getValue() + " " + connectDB.getMessage());
- }
- }
- // подключаемся к MySqL
- else if ( cbDataBases.getValue().equals("MySqL") &&
- btnConn.isSelected() && URL.contains("mysql") ){
- // подключаемся к базе
- connectDB.conDB(URL, USER, PASS);
- // флаг подключения
- if (connectDB.getFlag()) {
- // передаем поток Connection в Query
- query.setCon(ConnectDB.getConnection());
- //вызов второго модального окна
- //////////////////////////////////////////////////////////
- ModalWorkTable.testTable();
- labelInfo.setText(cbDataBases.getValue() + " " + connectDB.getMessage());
- // делаем не активной Combobox, TextField выводим соответствующий текст и цвет button
- // подключаемся к базе
- activeInactive(true);
- }else{
- // кнопку переводим в режим "невыбраной"
- btnConn.setSelected(false);
- labelInfo.setId("labelInfoDisconColor");
- labelInfo.setText(cbDataBases.getValue() + " " + connectDB.getMessage());
- }
- }
- //если не подключается
- else {
- // создаем метку для отключения красный цвет)
- labelInfo.setId("labelInfoDisconColor");
- labelInfo.setText( "Connection Failed" );
- // кнопку переводим в режим "невыбраной"
- btnConn.setSelected(false);
- }
- }
- });
- //слушатель и обработчик событий ComboBox для смени картинки
- cbDataBases.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- if (cbDataBases.getValue().contains( "MySqL") ){
- //выводим значек базы в Main
- labelPicture.setGraphic( sizeLabelPicture("MySqL") );
- //передаем имя базы в ModalWorkTable для вывода значка
- ModalWorkTable.setNameSql("MySqL");
- }
- else if (cbDataBases.getValue().contains( "PostgreSqL") ){
- //выводим значек базы в Main
- labelPicture.setGraphic( sizeLabelPicture("PostgreSqL") );
- //передаем имя базы в ModalWorkTable для вывода значка
- ModalWorkTable.setNameSql("PostgreSqL");
- }
- }
- });
- //сплывающая подсказка ComboBox
- cbDataBases.setTooltip( new Tooltip(" Select DataBase ") );
- VBox vBoxButton= new VBox();
- // отступы вокруг vBoxCenter
- vBoxButton.setPadding(new Insets(10, 0, 0, 0));
- // выравниваем элементы по ценру окна
- vBoxButton.setAlignment(Pos.CENTER);
- vBoxButton.getChildren().add( btnConn);
- // VBOX для LabelInfo
- VBox vBoxLabelInfo = new VBox();
- //отступы вокруг vBoxLabelInfo
- vBoxLabelInfo.setPadding(new Insets(10, 0, 5, 0));
- vBoxLabelInfo.getChildren().add(labelInfo);
- vBoxLabelInfo.setAlignment(Pos.BOTTOM_CENTER);
- // добавляем VBOX-root
- root.getChildren().addAll(vBoxTop,vBoxCenter, vBoxButton, vBoxLabelInfo);
- // создаем сцену
- Scene scene = new Scene(root);
- // сцена на подмостках
- stage.setScene(scene);
- // отключем кнопку маximyze и фиксируем окно
- stage.setResizable(false);
- //по центру
- root.setAlignment(Pos.CENTER);
- // добавляем стиль-css
- scene.getStylesheets().add(Main.class.getResource("MainWindow.css").toExternalForm());
- // показуем подмостку и сцену
- stage.show();
- }
- // метод задает размер иконки и отправляет в label
- public ImageView sizeLabelPicture(String sqlType){
- ImageView imageViewPic = new ImageView();
- if (sqlType.equals("PostgreSqL")){
- Image image = new Image(getClass().getResourceAsStream("postgreSql.png"));
- imageViewPic.setFitHeight(55);
- imageViewPic.setFitWidth(55);
- imageViewPic.setImage(image);
- }
- else if (sqlType.equals("MySqL")){
- Image image = new Image(getClass().getResourceAsStream("mysql.png"));
- imageViewPic.setFitHeight(55);
- imageViewPic.setFitWidth(55);
- imageViewPic.setImage(image);
- }
- return imageViewPic;
- }
- // делаем активной/ неактивной Combobox, TextField
- public void activeInactive(boolean flag){
- cbDataBases.setDisable(flag);
- tfUrl.setDisable(flag);
- tfUser.setDisable(flag);
- tfPass.setDisable(flag);
- if (flag == true){
- //надпись кнопки
- btnConn.setText("Disconnect");
- // метка, стиль, цвет кнопки
- btnConn.setId("btnDisconColor");
- // создаем метку для удачного подключения(зеленый цвет)
- labelInfo.setId("labelInfoConnColor");
- }
- else {
- btnConn.setText(" Connect ");
- // создаем метку для отключения красный цвет)
- labelInfo.setId("labelInfoDisconColor");
- // метка, стиль, цвет кнопки
- btnConn.setId("btnConnColor");
- //передаем в class ConnectDB flag = false, обнуляем переменную Connection;
- ConnectDB.setFlag(false);
- ConnectDB.setConnection(null);
- }
- }
- public void initUrlUserPass(){
- //считуем значения с TextField и PasswordField в переменные URL USER PASS
- URL = tfUrl.getText();
- USER = tfUser.getText();
- PASS = tfPass.getText();
- }
- }
- package login;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.geometry.Pos;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.control.*;
- import javafx.scene.control.cell.TextFieldTableCell;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.VBox;
- import javafx.stage.Modality;
- import javafx.stage.Stage;
- import javafx.scene.control.TableColumn.CellEditEvent;
- /**
- * Created by Admin on 07.12.2016.
- */
- public class ModalWorkTable {
- // переменная для определеня значка базы в окне класа ModalWorkTable
- private static String nameSql = "";
- // сетер для нинициализации переменной nameSql
- public static void setNameSql(String nameSql){
- ModalWorkTable.nameSql = nameSql;
- }
- // ComboBox для таблиц определенной базы
- static ComboBox<String> cbAllTablesOfDataBase = new ComboBox<>();
- //список для ComboBox cbAllTablesOfDataBase
- static ObservableList<String> baseTablesInBase;
- // создать список типа Observablelist для заполнения CombBox из имен базы MySqL или PostgreSql
- static ObservableList<String> basesTypes;
- // список баз в ComboBox
- //static ComboBox<String> cbAllDataBases;
- // выводит количество таблиц в определенной Базе
- static Label labelTotalTablesInBases = new Label();
- static Label labelTotalBases = new Label("Name Base");
- // выводит количество баз
- static Label labelBases = new Label();
- static Label labelTest = new Label("test Label");
- static TableView tableView = new TableView();
- static Button btnOk = new Button("Ok");
- static Query query = new Query();
- public static void testTable(){
- // делаем кнопку неактивной
- btnOk.setDisable(true);
- tableView.getSelectionModel().clearSelection();
- tableView.getItems().clear();
- tableView.getColumns().clear();
- cbAllTablesOfDataBase.getSelectionModel().clearSelection();
- Query.data.clear();
- // передаем пустую таблицу в Query
- // Query.setTableView(tableView);
- tableView.setMinSize(600, 300);
- // ModalWorkTable.tableView =(Query.buildData("tbl1") );
- Main main = new Main();
- Stage stage = new Stage();
- // указываем stage, что оно модальное
- stage.initModality(Modality.APPLICATION_MODAL);
- // таблица доступна для редактирования
- tableView.setEditable(true);
- HBox hBox = new HBox();
- // VBox для tableView
- VBox tableBox = new VBox();
- // точка с которой начинает отображаться TableView
- tableBox.setLayoutX(25);
- tableBox.setLayoutY(195);
- tableBox.getChildren().add(tableView);
- //отступы вокруг vBoxLabelInfo
- hBox.setPadding(new Insets(0, 10, 0, 10));
- //----------------
- // запрос на количество баз для MySqL
- if (nameSql.equals("MySqL")){
- labelBases.setText( query.nameBaseMySqL() );
- }// запрос на количество баз для PostgreSql
- else if(nameSql.equals("PostgreSqL")){
- // выводит количество баз PostgreSql в Label
- labelBases.setText( query.nameBasePostgreSqL() );
- }
- labelTotalTablesInBases.setStyle("-fx-font-size: 20px;"+
- "-fx-font-family: Arial #67f5f5;" +
- "-fx-fill: #fffdf8;" +
- "-fx-effect: innershadow( three-pass-box , rgba(103, 245, 245, 0.7) , 6, 0.0 , 0 , 2 );");
- labelTotalBases.setStyle("-fx-font-size: 15px;"+
- "-fx-font-family: Arial #67f5f5;" +
- "-fx-fill: #fffdf8;" +
- "-fx-effect: innershadow( three-pass-box , rgba(103, 245, 245, 0.7) , 6, 0.0 , 0 , 2 );");
- labelBases.setStyle("-fx-font-size: 24px;"+
- "-fx-font-family: Arial #39f540;" +
- "-fx-fill: #fffdf8;" +
- "-fx-effect: innershadow( three-pass-box , rgba(57, 245, 64, 0.7) , 6, 0.0 , 0 , 2 );" );
- if ( nameSql.equals("MySqL") ){
- // создаю колекцию имен таблиц по выбраной базе в Combobox "cbAllDataBases"
- baseTablesInBase = FXCollections.observableArrayList(query.namesTablesInBaseArray( labelBases.getText() ));
- // добавляю новую колекцию в Combobox "cbAllTablesOfDataBase" для таблиц
- cbAllTablesOfDataBase.setItems(baseTablesInBase);
- // выводим количество таблиц в Базе MySqL
- labelTotalTablesInBases.setText("Total Tables: " + query.countTablesInDataBase( labelBases.getText() ));
- }
- else if ( nameSql.equals("PostgreSqL") ){
- // создаю колекцию имен таблиц по выбраной базе в Combobox "cbAllDataBases"
- baseTablesInBase = FXCollections.observableArrayList(query.namesTablesInBaseArrayForPostgreSql() );
- // добавляю новую колекцию в Combobox "cbAllTablesOfDataBase" для таблиц
- cbAllTablesOfDataBase.setItems(baseTablesInBase);
- // переопределяем количество таблиц в label базы PostgreSqL
- labelTotalTablesInBases.setText("Total Tables: " + query.countTablesInDataBasePostgreSql() );
- }
- // слушатель, обработчик собтытия на ComboBox для Button "active/inActive"
- cbAllTablesOfDataBase.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- // номер елемента в массиве для Combobox
- if ( (cbAllTablesOfDataBase.getSelectionModel().getSelectedIndex() >= 0 )) {
- btnOk.setDisable(false);
- }else {
- btnOk.setDisable(true);
- }
- }
- });
- // обработчик, слушатель Button
- btnOk.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- // очищаем от выбраных элементов в таблице
- tableView.getSelectionModel().clearSelection();
- // очищаем от елементов в таблице
- tableView.getItems().clear();
- // очищаем заголовки таблицы
- tableView.getColumns().clear();
- // передаем пустую/ получаем заполненную таблицу
- tableView = Query.buildData( tableView, cbAllTablesOfDataBase.getValue() );
- /////////////////////////////////////////////////
- // tableView.setEditable(true);
- //делаем последний столбец доступным для редактирования
- // Query.getCol().setCellFactory(TextFieldTableCell.forTableColumn());
- // делаем все стодбцы доступными для редактирования
- for (int i = 0; i < Query.getArrayList().size(); i++) {
- Query.getArrayList().get(i).setCellFactory(TextFieldTableCell.forTableColumn());
- // сушатель с обработчиком на все колонки
- Query.getArrayList().get(i).setOnEditCommit(new EventHandler<CellEditEvent>() {
- @Override
- public void handle(CellEditEvent t) {
- // номер строки(Rov), номер Колонки (Column), старое значение ячейки, новое значение ячейки
- labelTotalTablesInBases.setText(String.valueOf(t.getTablePosition().getColumn()
- + " " + String.valueOf(t.getTablePosition().getRow()))
- + " " + t.getOldValue().toString().trim() + " " + t.getNewValue().toString().trim()
- + " " + t.getTableColumn().getText() );
- //запрос на изменение значения в ячейки ComboBox // имя выбраной таблицы // имя колонки текщей таблицы
- Query.editTable(cbAllTablesOfDataBase.getValue(), t.getTableColumn().getText(),
- // номер текущего рядка // новое значение добавленное в ячейку ComboBox
- Integer.valueOf(t.getTablePosition().getRow()+1), t.getNewValue().toString().trim() );
- }
- });
- }
- }
- });
- // labelTest.setText( Query.editTable().toString() );
- // очищаем ComboBox от выбранного элемента при запуске
- cbAllTablesOfDataBase.getSelectionModel().clearSelection();
- // проверка для вывода значка базы в hBox
- if (nameSql.equals("MySqL") ){
- hBox.getChildren().add(main.sizeLabelPicture("MySqL"));
- }
- else if (nameSql.equals("PostgreSqL")){
- hBox.getChildren().add(main.sizeLabelPicture("PostgreSqL"));
- }
- hBox.getChildren().addAll( new VBox(labelTotalBases ,labelBases),
- labelTotalTablesInBases, cbAllTablesOfDataBase, btnOk, labelTest );
- hBox.setLayoutX(15);
- hBox.setLayoutY(40);
- // промежутки между элементами внутри vBoxTop
- hBox.setSpacing(10);
- // hBox.setPrefSize(200, 80);
- hBox.setAlignment(Pos.CENTER);
- Group root = new Group();
- stage.setTitle("Окно по работе с базой");
- // задний фон
- Image image = new Image("login/backgroundLamps.jpg");
- ImageView backgroundImage = new ImageView(image);
- root.getChildren().addAll(backgroundImage , hBox, tableBox);
- Scene scene = new Scene(root, 930, 600);
- // scene.getStylesheets().add("login/WorkTable.css");
- // scene.getStylesheets().add(ModalWorkTable.class.getResource("MainWindow.css").toExternalForm());
- stage.setScene(scene);
- // отключем кнопку маximyze и фиксируем окно
- stage.setResizable(false);
- stage.show();
- }
- }
- package login;
- import javafx.beans.property.SimpleStringProperty;
- import javafx.beans.value.ObservableValue;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.scene.control.TableColumn;
- import javafx.scene.control.TableColumn.CellDataFeatures;
- import javafx.scene.control.TableView;
- import javafx.util.Callback;
- import java.sql.*;
- import java.util.ArrayList;
- /**
- * Created by Admin on 02.12.2016.
- */
- public class Query {
- // поля для подключения
- private static Statement stmt;
- private static ResultSet rs;
- private static Connection con;
- private static TableColumn col;
- public static TableColumn getCol(){
- return col;
- }
- // список столбцов
- static ArrayList<TableColumn> arrayListTableColumn = new ArrayList<>();
- public static ArrayList<TableColumn> getArrayList(){
- return arrayListTableColumn;
- }
- // private static TableView tableView;
- // получаем таблицу с ModalWorktable
- // public static void setTableView(TableView tableView){
- // Query.tableView = tableView;
- // }
- // public static TableView getTableView (){
- // return Query.tableView;
- // }
- public void setCon(Connection con){
- Query.con = con;
- }
- // public static void setStmt(Statement stmt){
- // Query.stmt = stmt;
- // }
- /*
- public String runDb(){
- String lineCommand = "";
- String query = "select * from tbl1";
- try{
- // ткрываем подключение к БД
- con = DriverManager.getConnection(URL, USER, PASS);
- stmt = con.createStatement();
- // запрос
- rs = stmt.executeQuery(query);
- while (rs.next()){
- lineCommand = rs.getString(2);
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- finally {
- //закрываем подключение
- try {
- con.close();
- }catch (SQLException se){}
- try {
- stmt.close();
- }catch (SQLException se){}
- try {
- rs.close();
- }catch (SQLException se){}
- }
- return lineCommand;
- }
- */
- //создаем Array с именами Баз MySQL
- // public ArrayList<String> namesBaseArray(){
- // return forAllArrayListQuary("show databases");
- // return forAllArrayListQuary("SELECT DATABASE()");
- // }
- //создаем Array с именами Баз для PostgreSql
- // public ArrayList<String> namesBaseArrayForPostgreSql(){
- // return forAllArrayListQuary("SELECT datname FROM pg_database WHERE datistemplate = false;");
- // return forAllArrayListQuary("SELECT current_database()");
- // }
- // запрос получения имени текущей базы в MySqL
- public String nameBaseMySqL(){
- return nameBaseQuary("SELECT DATABASE()");
- }
- // запрос получения имени текущей базы в PostgreSqL
- public String nameBasePostgreSqL(){
- return nameBaseQuary("SELECT current_database()");
- }
- // узнаем к-тво Баз в PostgreSql
- // int countDataBasesOffPostgreSql(){
- // return amountOfElements("SELECT count(*) FROM pg_database where datistemplate = false");
- // }
- // узнаем к-тво Баз
- // int countDataBases(){
- // return amountOfElements("SELECT count(*) FROM information_schema.schemata");
- // }
- //создаем Array с именами таблиц для PostgreSql
- public ArrayList<String> namesTablesInBaseArrayForPostgreSql(){
- return forAllArrayListQuary("Select table_name FROM information_schema.tables WHERE table_schema = 'public'");
- }
- //создаем Array с именами таблиц для MySql
- public ArrayList<String> namesTablesInBaseArray(String nameBase){
- return forAllArrayListQuary("SHOW TABLES from " + nameBase);
- }
- // узнаем к-во таблиц в базе
- int countTablesInDataBase(String nameBase){
- return amountOfElements("SELECT count(*) FROM information_schema.tables where table_schema="+"'"+nameBase+"'");
- }
- // узнаем количество таблиц в базе PostgreSql
- // int countTablesInDataBasePostgreSql(){
- // return amountOfElements("SELECT count(*) FROM pg_database where datistemplate = false;");
- // }
- // 2-й вариант, узнаем количество таблиц в базе PostgreSql
- int countTablesInDataBasePostgreSql(){
- return namesTablesInBaseArrayForPostgreSql().size();
- }
- // метод для возврата Имени базы с
- private String nameBaseQuary(String query){
- String resultQuery = "";
- try{
- stmt = con.createStatement();
- rs = stmt.executeQuery(query);
- while (rs.next()){
- resultQuery = rs.getString(1);
- }
- }
- catch (SQLException e){
- e.printStackTrace();
- }
- finally {
- //закрываем подключение если непустое
- try {
- if (stmt != null)
- stmt.close();
- }catch (SQLException se){}
- try {
- if (rs != null)
- rs.close();
- }catch (SQLException se){}
- }
- return resultQuery;
- }
- // метод для возврата ArrayList-ов с именами Баз, Таблиц
- private ArrayList<String> forAllArrayListQuary(String query){
- ArrayList<String> list = new ArrayList<>();
- try{
- stmt = con.createStatement();
- rs = stmt.executeQuery(query);
- while (rs.next()){
- list.add( rs.getString(1) );
- }
- }
- catch (SQLException e){
- e.printStackTrace();
- }
- finally {
- //закрываем подключение если непустое
- try {
- if (stmt != null)
- stmt.close();
- }catch (SQLException se){}
- try {
- if (rs != null)
- rs.close();
- }catch (SQLException se){}
- }
- return list;
- }
- //подсчитует и возвращает к-тво Баз, Таблиц
- private int amountOfElements(String query){
- int count = 0;
- try{
- stmt = con.createStatement();
- rs = stmt.executeQuery(query);
- while (rs.next())
- count = rs.getInt(1);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- finally {
- //закрываем подключение если не пустое
- try {
- if (stmt != null)
- stmt.close();
- }catch (SQLException se){}
- try {
- if (rs != null)
- rs.close();
- }catch (SQLException se){}
- }
- return count;
- }
- //создаем динамичискую таблицу: заполняем полученную, пустую таблицу данными с БазыSqL// и возвращаем обратно///////////////
- //Tableview and data
- static ObservableList<ObservableList> data = FXCollections.observableArrayList();
- //создаем динамичискую таблицу: заполняем полученную, пустую таблицу данными с БазыSqL// и возвращаем обратно//////
- public static TableView buildData(TableView tableView, String tableNameQuary){
- try{
- stmt = con.createStatement();
- ResultSet rs = stmt.executeQuery("SELECT * from " + tableNameQuary);
- //создаем колонки таблицы
- for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
- final int j = i;
- col = new TableColumn(rs.getMetaData().getColumnName(i+1));
- col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
- public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
- return new SimpleStringProperty(param.getValue().get(j).toString());
- }
- });
- tableView.getColumns().addAll(col);
- // добавляем все Колонки таблици TableColumn в список для передачи в ModalWorkTable
- arrayListTableColumn.add(col);
- }
- // проходим по колонкам Columns и строкам Rows
- // для создания ObservableList
- while(rs.next()){
- //Iterate Row
- ObservableList<String> row = FXCollections.observableArrayList();
- for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
- //итерация колонок
- row.add(rs.getString(i));
- }
- //System.out.println("Row [1] added "+row );
- data.add(row);
- }
- //создаем таблицу с колонками и строками
- tableView.setItems(data);
- }catch(Exception e){
- e.printStackTrace();
- // System.out.println("Error on Building Data");
- }
- finally {
- //закрываем подключение если не пустое
- try {
- if (stmt != null)
- stmt.close();
- }catch (SQLException se){}
- try {
- if (rs != null)
- rs.close();
- }catch (SQLException se){}
- }
- return tableView;
- }
- // изменяем значения в таблице
- public static void editTable(String tableName, String columnName, int rowNumID , String valueNew ){
- try{
- stmt = con.createStatement();
- // количество столбцов
- // rs.getMetaData().getColumnCount();
- // имя колонки по индексу
- // count = rs.getMetaData().getCatalogName(1);
- // int rowIndex = 0;
- // count = rs.getMetaData().getColumnName(1);
- // SQL-запрос на изменения значения ячейки таблицы
- stmt.executeUpdate("UPDATE " + tableName + " SET " + columnName.toUpperCase() + " ='"+valueNew+"'" +
- " WHERE id ="+"'"+rowNumID+"'");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- finally {
- //закрываем подключение если не пустое
- try {
- if (stmt != null)
- stmt.close();
- }catch (SQLException se){}
- try {
- if (rs != null)
- rs.close();
- }catch (SQLException se){}
- }
- }
- }
- package login;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.sql.Statement;
- /**
- * Created by Admin on 02.12.2016.
- */
- public class ConnectDB {
- private static Connection connection;
- private static boolean flag;
- private String message = "";
- public static Connection getConnection(){
- return connection;
- }
- // seter нужен чтоб установить null
- public static void setConnection(Connection connection){
- ConnectDB.connection = connection;
- }
- public String getMessage(){
- return message;
- }
- // состояние подключения
- public static boolean getFlag(){ return ConnectDB.flag; }
- // flag устанавливается в false если с Main зашли удачно
- public static void setFlag(boolean flag){
- ConnectDB.flag = flag;
- }
- public void conDB(String URL, String USER, String PASS){
- try {
- connection = DriverManager.getConnection(URL, USER, PASS);
- } catch (SQLException e) {
- ConnectDB.flag = false;
- // e.printStackTrace();
- message = "Connection Failed";
- }
- if (connection != null) {
- message = "Successfully Connected";
- ConnectDB.flag = true;
- } else {
- message = "Connection Failed";
- ConnectDB.flag = false;
- }
- }
- }
- package login;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- /**
- * Created by Admin on 03.12.2016.
- */
- public class Disconnect {
- private String message = "";
- public String getMessage(){
- return message;
- }
- public boolean disconMeth(Connection con){
- //close connection ,stmt and resultset here
- boolean flag = false;
- if (con != null){
- try {con.close(); } catch(SQLException se) { /*can't do anything */ }
- flag = true;
- message = "Disconnected";
- }
- // if (stmt != null){
- // try { stmt.close(); } catch(SQLException se) { /*can't do anything */ }
- // flag = true;
- // }
- // if (rs != null){
- // try { rs.close(); } catch(SQLException se) { /*can't do anything */ }
- // flag = true;
- // }
- return flag;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement