Работа с локальной БД
Подскажите пожалуйста БД, с которой можно работать локально, не запуская при этом никаких серверов, то есть напрямую с файлом БД.
И конечно же, чтобы с ней было удобно работать с java-приложения.
P.S. Использовал InterBase, но постоянная связь с работой сервера мне мешает, учитывая что моя БД полностью локальна.
Добавлено через 3 часа 0 минут
Ладно, буду использовать MS Access.
Работа с локальной сетью
Здравствуйте, уважаемые программисты. Прошу помощи в решении моей проблемы, связанной с.
Работа по локальной сети
Добрый день, такая проблема стоит приложение на одном компьютере например 1 и на нем же sql server.
Работа в локальной сети
Добрый день. Вот такая проблема: Есть файл (образец) как сделать так что бы открывая его.
Медленная работа с локальной переменной
Доброго дня! Объясните новичку, почему одни и те же запросы с и без использования локальных.
Сообщение от Faustlogger
Сообщение от Rameron
Derby поддерживает embdedded режим, когда сам derby встраивается в приложение.
Хотя я все же рекомендовал бы h2.
Сообщение от Eugene22
Сообщение от Eugene22
Сообщение от Rameron
Подскажите пожалуйста БД, с которой можно работать локально, не запуская при этом никаких серверов, то есть напрямую с файлом БД.
Ну, или он не умеет выражать свои мысли так, чтобы его понимал не только он сам, но и окружающие.
Сообщение от Rameron
Любая БД — это сервер в том или ином виде. Если тебе нужна именно БД, то embedded-БД самый правильный выбор. Какую из них выбрать — решать тебе.
Сообщение от turbanoff
Derby поддерживает embdedded режим, когда сам derby встраивается в приложение.
Хотя я все же рекомендовал бы h2.
Сообщение от Rameron
Хм, интересно, а разве в других реляционных БД, есть еще какие-то способы непосредственной работы с базой? (orm и обертки не считаются)
Это как бы стандарт для RDBMS.
Сообщение от turbanoff
в оракл можно засасывать данные при помощи sqlloadera, это не совсем полноценная работа с БД, но всё-же некий чит безскульного инсерта, так-же можно наделать своих процедур на pl/sql и на яве прямо в базе и работать с ними напрямую вызывая их из своего кода через JDBC. (хотя pl можно с натяжкой назвать обёрткой)
и наконец самое вкусное — оракл умеет работать напрямую с xml и после загрузки в БД предоставляет 2 интерфейса SQL и доступ с имитацией файловой системы по протоколу ftp
если кто знает ещё варианты, хотелось бы о них узнать тоже
Локальная бд для java
Вначале создадим на сервере MySQL пустую базу данных, которую назовем store и с которой мы будет работать в приложении на Java. Для создания базы данных применяется выражение SQL:
Его можно выполнить либо из консольного клиента MySQL Command Line Client, либо из графического клиента MySQL Workbench, которые устанавливются вместе с сервером MySQL. Подробнее про создание базы данных можно прочитать в статье Создание и удаление базы данных.
Для подключения к базе данных необходимо создать объект java.sql.Connection . Для его создаия применяется метод:
Connection DriverManager.getConnection(url, username, password)
Метод DriverManager.getConnection в качестве параметров принимает адрес источника данных, логин и пароль. В качестве логина и пароля передаются логин и пароль от сервера MySQL. Адрес локальной базы данных MySQL указывается в следующем формате: jdbc:mysql://localhost/название_базы данных
Пример создания подключения к созданной выше локальной базе данных store:
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/store", "root", "password");
После завершения работы с подключением его следует закрыть с помощью метода close() :
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/store", "root", "password"); // работа с базой данных connection.close();
Либо мы можем использовать конструкцию try :
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/store", "root", "password")) < // работа с базой данных >
Возможные проблемы с часовыми поясами и SSL
При подключении к базе данных MySQL мы можем столкнуться с рядом проблем. Например, определим следующий код подключения:
import java.sql.Connection; import java.sql.DriverManager; public class Program < public static void main(String[] args) < try< String url = "jdbc:mysql://localhost/store"; String username = "root"; String password = "password"; Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); try (Connection conn = DriverManager.getConnection(url, username, password))< System.out.println("Connection to Store DB succesfull!"); >> catch(Exception ex) < System.out.println("Connection failed. "); System.out.println(ex); >> >
Даже если указаны правильно адрес базы данных, логин, пароль, мы все равно можем столкнуться с ошибками:
Из консольного вывода видно, что проблема заключается с SSL и часовым поясом. Чтобы решить данную проблему, необходимо указать в адресе подключения часовой пояс бд и параметры для использования ssl. В частности, я указываю, что SSL не будет использоваться и что часовым поясом будет московский часовой пояс:
String url = "jdbc:mysql://localhost/store?serverTimezone=Europe/Moscow&useSSL=false";
Параметры подключения указываются после вопросительного знака после названия базы данных. Параметр serverTimezone указывает на название часового пояса сервера бд. В данном случае «Europe/Moscow», cписок всех допустимых названий часовых поясов можно найти на странице https://gist.github.com/kinjal/9105369. И параметр useSSL=false указывает, что SSL не будет применяться.
Файлы конфигурации
Мы можем определить все данные для подключения непосредственно в программе. Однако что если какие-то данные были изменены? В этом случае потребуется перекомпиляция приложения. Иногда это не всегда удобно, например, отсутствует досуп к исходникам, или перекомпиляция займет довольно продолжительное время. В этом случае мы можем хранить настройки в файле.
Так, создадим в папке программы новый текстовый файл database.properties , в котором определим настройки подключения:
url = jdbc:mysql://localhost/store?serverTimezone=Europe/Moscow&useSSL=false username = root password = password
Загрузим эти настройки в программе:
import java.sql.*; import java.nio.file.*; import java.io.*; import java.util.*; public class Program < public static void main(String[] args) < try< Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); try (Connection conn = getConnection())< System.out.println("Connection to Store DB succesfull!"); >> catch(Exception ex) < System.out.println("Connection failed. "); System.out.println(ex); >> public static Connection getConnection() throws SQLException, IOException < Properties props = new Properties(); try(InputStream in = Files.newInputStream(Paths.get("database.properties")))< props.load(in); >String url = props.getProperty("url"); String username = props.getProperty("username"); String password = props.getProperty("password"); return DriverManager.getConnection(url, username, password); > >
Создание небольшой БД SQLite в java
Появилась необходимость сделать приложение на java с подключением БД.
Сама программа будет находится на локальном компьютере слабой конфигурации и без сети. Поэтому выбрана была база SQLite.
Порывшись в сети на простые понятные примеры, ничего найти подходящего не удалось. Пришлось собирать все с разных статей и разных форумов. Надеюсь, данная информация будет полезной.
Для создания самой БД была использована утилита SQLiteadmin, найденная в просторах интернета.
Создание БД сводится к паре действий.
Создаем саму базу и указываем куда ее сохранить.
Появившиеся слева папки показывают о успешном создании БД.
Далее переходим к созданию проекта, заполняем необходимые данные, нажимаем NEXT и сразу подгружаем скачанную здесь библиотеку (библиотека для подключения БД к проекту).
После создания проекта, создаю 2 класса.
Первый класс для запуска:
import java.sql.SQLException; public class db < public static void main(String[] args) throws ClassNotFoundException, SQLException < conn.Conn(); conn.CreateDB(); conn.WriteDB(); conn.ReadDB(); conn.CloseDB(); >>
Во втором классе сделана основная реализация:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class conn < public static Connection conn; public static Statement statmt; public static ResultSet resSet; // --------ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ-------- public static void Conn() throws ClassNotFoundException, SQLException < conn = null; Class.forName("org.sqlite.JDBC"); conn = DriverManager.getConnection("jdbc:sqlite:TEST1.s3db"); System.out.println("База Подключена!"); >// --------Создание таблицы-------- public static void CreateDB() throws ClassNotFoundException, SQLException < statmt = conn.createStatement(); statmt.execute("CREATE TABLE if not exists 'users' ('id' INTEGER PRIMARY KEY AUTOINCREMENT, 'name' text, 'phone' INT);"); System.out.println("Таблица создана или уже существует."); >// --------Заполнение таблицы-------- public static void WriteDB() throws SQLException < statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Petya', 125453); "); statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Vasya', 321789); "); statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Masha', 456123); "); System.out.println("Таблица заполнена"); >// -------- Вывод таблицы-------- public static void ReadDB() throws ClassNotFoundException, SQLException < resSet = statmt.executeQuery("SELECT * FROM users"); while(resSet.next()) < int name = resSet.getString("name"); String phone = resSet.getString("phone"); System.out.println( "ID = " + id ); System.out.println( "name = " + name ); System.out.println( "phone = " + phone ); System.out.println(); >System.out.println("Таблица выведена"); > // --------Закрытие-------- public static void CloseDB() throws ClassNotFoundException, SQLException < conn.close(); statmt.close(); resSet.close(); System.out.println("Соединения закрыты"); >>
После запуска получаем данный результат:
Коментарии по коду и вопрос, что за команда, можно поискать в интернете. Данная статья имеет вид знакомства создания БД SQLite в проекте Java.
Так же соблюдение всех пробелов и запятых значительно упростит создание проекта, проще копировать и изменять данные.
Создание небольшой БД SQLite в java
Появилась необходимость сделать приложение на java с подключением БД.
Сама программа будет находится на локальном компьютере слабой конфигурации и без сети. Поэтому выбрана была база SQLite.
Порывшись в сети на простые понятные примеры, ничего найти подходящего не удалось. Пришлось собирать все с разных статей и разных форумов. Надеюсь, данная информация будет полезной.
Для создания самой БД была использована утилита SQLiteadmin, найденная в просторах интернета.
Создание БД сводится к паре действий.
Создаем саму базу и указываем куда ее сохранить.
Появившиеся слева папки показывают о успешном создании БД.
Далее переходим к созданию проекта, заполняем необходимые данные, нажимаем NEXT и сразу подгружаем скачанную здесь библиотеку (библиотека для подключения БД к проекту).
После создания проекта, создаю 2 класса.
Первый класс для запуска:
import java.sql.SQLException; public class db < public static void main(String[] args) throws ClassNotFoundException, SQLException < conn.Conn(); conn.CreateDB(); conn.WriteDB(); conn.ReadDB(); conn.CloseDB(); >>
Во втором классе сделана основная реализация:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class conn < public static Connection conn; public static Statement statmt; public static ResultSet resSet; // --------ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ-------- public static void Conn() throws ClassNotFoundException, SQLException < conn = null; Class.forName("org.sqlite.JDBC"); conn = DriverManager.getConnection("jdbc:sqlite:TEST1.s3db"); System.out.println("База Подключена!"); >// --------Создание таблицы-------- public static void CreateDB() throws ClassNotFoundException, SQLException < statmt = conn.createStatement(); statmt.execute("CREATE TABLE if not exists 'users' ('id' INTEGER PRIMARY KEY AUTOINCREMENT, 'name' text, 'phone' INT);"); System.out.println("Таблица создана или уже существует."); >// --------Заполнение таблицы-------- public static void WriteDB() throws SQLException < statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Petya', 125453); "); statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Vasya', 321789); "); statmt.execute("INSERT INTO 'users' ('name', 'phone') VALUES ('Masha', 456123); "); System.out.println("Таблица заполнена"); >// -------- Вывод таблицы-------- public static void ReadDB() throws ClassNotFoundException, SQLException < resSet = statmt.executeQuery("SELECT * FROM users"); while(resSet.next()) < int name = resSet.getString("name"); String phone = resSet.getString("phone"); System.out.println( "ID = " + id ); System.out.println( "name = " + name ); System.out.println( "phone = " + phone ); System.out.println(); >System.out.println("Таблица выведена"); > // --------Закрытие-------- public static void CloseDB() throws ClassNotFoundException, SQLException < conn.close(); statmt.close(); resSet.close(); System.out.println("Соединения закрыты"); >>
После запуска получаем данный результат:
Коментарии по коду и вопрос, что за команда, можно поискать в интернете. Данная статья имеет вид знакомства создания БД SQLite в проекте Java.
Так же соблюдение всех пробелов и запятых значительно упростит создание проекта, проще копировать и изменять данные.