@M-Misha-M
горе-junior, программирую на C#, изучаю .Net

Как присоединить Базу данных к своему проекту на GitHub?

Здравствуйте, у меня есть небольшой проект на Swing с применением JDBC. И у меня есть база данных на моём компе. Так вот я этот проект хочу выложить на GitHub, так как потом дам ссылку на этот проект в резюме. У меня вопрос - человек который захочет проверить приложение откроет мой проект, но выбьет миллион ошибок, так как у него данной Бд на компе не будет. Что делать в таком случае? Просто присоединить в проекту файл дампа Бд?? И тогда ему нужно будет уже импортировать этот дамп на своём компе или как?
  • Вопрос задан
  • 4407 просмотров
Решения вопроса 1
EugeneP2
@EugeneP2
Java Dev
Если БД не большая, то можно использовать встраиваемую (imbedded) базу данных, например H2.

База будет подыматься вместе с вашим приложением.

Все что нужно, это подключить в зависимости JDBC драйвер
<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.192</version>
        </dependency>


И указать URL с нужными параметрами

Простой пример
import java.sql.*;

public class H2Main {

    static {
        try {
            Class.forName("org.h2.Driver");
        } catch (ClassNotFoundException e) {
            System.err.println("Error load H2 JDBC driver: " + e.getMessage());
        }
    }


    public static void main(String[] args) {

        try (Connection con = DriverManager.getConnection("jdbc:h2:./h2example", "sa", "")) {

            createSimpleDBSchema(con);

            System.out.printf("Message from H2: %s\n", getMessage(con));


        } catch (Exception e) {
            System.err.printf("%s: %s\n", e.getClass().getSimpleName(), e.getMessage());
        }


    }


    static void createSimpleDBSchema(Connection con) {
        try (Statement stmt = con.createStatement()) {

            stmt.executeUpdate("CREATE TABLE HelloH2 (message varchar(255) NULL);");

            stmt.executeUpdate("INSERT INTO HelloH2 (message) VALUES ('Hello World!')");

        } catch (SQLException e) {
            System.err.printf("%s: %s\n", e.getClass().getSimpleName(), e.getMessage());
        }
    }


    static String getMessage(Connection con) throws SQLException {

        try (Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT message FROM HelloH2")) {

            if (rs.next())
                return rs.getString("message");
            else
                return null;

        }
    }

}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Antonchik
@Antonchik
Программирую на HTML
Используйте миграции.
Ответ написан
@Free_ze
Пишу комментарии в комментарии, а не в ответы
В простейшем случае можно рядом (допустим, в папке Database) просто положить CREATE-скрипт. Для портфолио этого достаточно.

Для активно "живущего проекта" с пользователями, подразумевающего какие-то патчи и новые версии, хорошо бы также рядом класть скрипты миграции (которые обновлять в том же коммите, где это имеет значение), которые помогали бы пользователям в пару кликов актуализировать структуру БД без ущерба для их данных. Скрипты эти должны отталкиваться от начального состояния базы (обновляться инкрементально).
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Используйте SQLite и храните файл базы в репозитории
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы