Подтвердить что ты не робот

Настройка встроенной базы данных Derby в автономном приложении Java

Я пытаюсь настроить встроенную базу данных Derby для автономного приложения Java, но после того, как вы пролили всю документацию, я просто не могу найти простых объяснений или примеров. Я использую Eclipse с плагином Derby и включил режим Derby для моего проекта.

Я нашел пример использования встроенной базы данных Derby в автономной адресной книге , а также обзор использования Derby в Eclipse (что doesn Похоже, что это касается встроенного развертывания), но я все еще чувствую, что мне не хватает чего-то фундаментального.

Это мой первый раз, когда я пытаюсь использовать базу данных с Java, и я немного смущен, поэтому вот основные вопросы:

  • Какая основная философия (или модель) для взаимодействия Java с базой данных Derby (во встроенном развертывании)? Учитываются ли их важные шаблоны проектирования?
  • Нужно ли мне создавать какой-либо тип конструктора базы данных (включая структуру таблицы и т.д.) в классе или все это делается с помощью какого-либо другого инструмента?
  • Одна база данных создается и сохраняется, как ее "запустить"? И где сохранена фактическая база данных?

Фрагменты кода будут очень полезны!

4b9b3361

Ответ 1

Я предлагаю вам использовать класс с именем ConnectionDerby, где поместить всю логику и параметры в Select, insert, update, Delete и как встроенную базу данных я компилировать, если база данных уже существует, если она не существует, я создал тогда, Я надеюсь, что этот код поможет вам, извините или мой английский, и я новичок, используя эту базу данных в java, но я надеюсь, что это поможет вам понять....

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public class ConnectionDerby {

    private Connection conn = null;
    private Statement sttm = null;

    public Connection CrearBD(String query) {
    try {
        //Obtenemos el Driver de Derby
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db;create=true");
        if (conn != null) {
            //JOptionPane.showMessageDialog(null, "Base de Datos Lista");
            try {
                PreparedStatement pstm = conn.prepareStatement(query);
                pstm.execute();
                pstm.close();
                //JOptionPane.showMessageDialog(null, "Base de Datos Creada Correctamente");
                System.out.println("SENTENCIA SQL EFECTUADA CORRECTAMENTE");
            } catch (SQLException ex) {
                //JOptionPane.showMessageDialog(null, ex.getLocalizedMessage());
                System.out.println(ex.getMessage());
                JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL", "Error", JOptionPane.ERROR_MESSAGE);
                //JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL");
            }
        }

    } catch (SQLException e) {
        System.out.println(e.getMessage());
        JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL", "Error", JOptionPane.ERROR_MESSAGE);
        //JOptionPane.showMessageDialog(null, "TRONO LA APLICACION EN EJECUTAR LAS SENTENCIAS SQL parte 2");
    } catch (ClassNotFoundException e) {
        System.out.println(e.getMessage());
        JOptionPane.showMessageDialog(null, "NO SE PUDO EFECTUAR LA SENTENCIA SQL", "Error", JOptionPane.ERROR_MESSAGE);
        //JOptionPane.showMessageDialog(null, "TRONO LA APLICACION EN EJECUTAR LAS SENTENCIAS SQL parte 3");
    }
    return conn;
}

public Connection AccederBD() {
    try {
        //Obtenemos el Driver de Derby
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        //Obtenemos la Conexión
        conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db");
        if (conn != null) {
            System.out.println("Base de Datos Ya Leida Correctamente");
            //JOptionPane.showMessageDialog(null, "Base de Datos Ya Leida Correctamente");
        }
    } catch (SQLException e) {
        System.out.println(e.getMessage());
        System.out.println("Sistema Creado por Mario José Echeverría");
        System.out.println("NO SE ENCONTRO LA BASE DE DATOS");
        System.out.println("CREANDO BASE DE DATOS EN DERBY DATABASE");
        String createTableProyecto = "Sentence to create first table";
        String createTablePrimer = "Sentence to create second table";
        String createTableTopCoat = "Sentence to create third table";
        String createTableCotizacion = "Sentence to create fourth table"
        CrearBD(createTableProyecto);
        CrearBD(createTablePrimer);
        CrearBD(createTableTopCoat);
        CrearBD(createTableCotizacion);
        //*************PRUEBAS*****************
    } catch (ClassNotFoundException e) {
        System.out.println(e.getMessage());
        System.out.println("ERROR DE TIPO ClassNotFoundException");
        //JOptionPane.showMessageDialog(null, "TRONO LA APLICACION EN ACCEDER A LA BASE DE DATOS parte 2");
    }
    return conn;
}

public void UID(String sqlcad) {
    try {
        //Obtenemos el Driver de Derby
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db");
        sttm = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        sttm.executeUpdate(sqlcad);
        System.out.println("Conexión Exitosa a la Base de Datos");
        //JOptionPane.showMessageDialog(null, "Conexión exitosa");
        sttm.close();
        conn.close();
        if (conn != null) {
            System.out.println("Consulta Realizada Correctamente");
            //JOptionPane.showMessageDialog(null, "Base de Datos Ya Leida Correctamente");
        }
    } catch (SQLException e) {
        System.out.println("Error= " + e.getMessage());
    } catch (ClassNotFoundException e) {
        System.out.println("Error= " + e.getMessage());
    }
}

public ResultSet getvalores(String sqlcad) {
    ResultSet rs = null;
    try {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        conn = DriverManager.getConnection("jdbc:derby:.\\BD\\nombrebasededatos.db");
        sttm = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        //String sqlcad = "Select nombre, m2xgal, pregal, precub, descripcion from primer";
        rs = sttm.executeQuery(sqlcad);
        return rs;
    } catch (Exception e) {
        System.out.println("Error= " + e.getMessage());
        return rs;
    }
}

}

Ответ 2

Если вы в порядке с переключением на NetBeans IDE, вот два полезных урока, которые я смог получить в идее (у меня есть некоторые незначительные проблемы с установщиком). Он использует JPA, который представляет собой абстракцию, которая упрощает взаимодействие с базой данных.

https://blogs.oracle.com/geertjan/entry/embedded_database_for_netbeans_platform

http://platform.netbeans.org/tutorials/nbm-crud.html

Чтобы решить некоторые из ваших запросов:

  • Если вы используете java и отношения dbs, я бы очень рекомендовал JPA. В противном случае вы используете JDBC для взаимодействия с вашей базой данных и используя SQL.
  • Традиционно вы используете утилиту или запускаете script для создайте схему таблицы, так как вы собираетесь внедрить вас может быть интересно (как я) в том, чтобы создать db и схему динамически, так что вам не нужно запускать этот script каждый раз, когда вы установите приложение. Это можно сделать с дерби, встроенной JPA которую описывает учебник.
  • если вы используете встроенной базы данных derby нет отдельного потока или сокета, который вы начинаете. вы будете использовать jpa или derby api, которые будут использовать блокировка файлов для доступа к файлам дерби. В моем определении встроенный база данных не имеет отдельного потока или процесса, прослушивающего сокет обработка нескольких запросов.

Надеюсь, это поможет и удачи!

Ответ 3

Чтобы использовать Derby в Java во встроенном режиме, нам необходимо выполнить следующие шаги:

  • Используйте драйвер org.apache.derby.jdbc.EmbeddedDriver, расположенный в derbyclient зависимость от Maven
  • Используйте строку подключения для встроенного режима: jdbc:derby:dbname
  • Настройте главную систему Derby: System.setProperty("derby.system.home", "/home/janbodnar/.derby");
  • Завершение работы Derby программно в конце:  DriverManager.getConnection("jdbc:derby:;shutdown=true");
  • Обработать ошибку XJ015, которая запускается при успешном завершении работы

Полные рабочие примеры можно найти в моем Java JDBC Derby Programming tutorial.

Ответ 4

Те блоги n url очень замечательные, но я предлагаю переключить OP на NetBeans, хотя я использовал d ClientDriver версию драйверов Java Derby, и я создаю класс или метод для запуска базы данных автоматически во время запуска так что я не сталкиваюсь с каким-либо SQLException во время выполнения, и он работает. Хотя я использую класс NetworkServerControl для запуска моей базы данных во время выполнения, как diz

NetworkServerControl server=new NetworkServerControl(InetAddress.getLocalHost(),1527);
server.start (null);
//Class.forName n DriverManager.getConnection() declarations goes here. 

Ответ 5

Я никогда не делал дерби (хотя однажды сделал mysql) и все перешел из этот простой пример. На самом деле я даже не читал этого разговора - я просто прокрутил до середины, где объяснялся пример.