Создание новой локальной базы данных с Java

Моя цель - создать локальную базу данных, которую можно читать и записывать с помощью Java. У меня есть некоторый опыт работы с локальной базой данных sqlite с помощью Python и взаимодействия с существующими сетевыми базами данных в Microsoft Azure через VB.Net, но формулировка Java для создания базы данных ускользает от меня.

Большинство источников (например, Документы JDBC), похоже, предполагают, что вы обращаетесь к базе данных по сетевому протоколу или к базе данных, размещенной на localhost. Моя желаемая реализация состоит в том, чтобы создать и сохранить базу данных в файле (или коллекции файлов), чтобы ее можно было хранить и получать к ней доступ локально, без подключения к сети (предположительно через протокол "file:").

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

Многие источники предлагают решения, такие как H2, MySQL, Derby или Hypersonic DB. Однако я не хочу устанавливать расширения (если это правильный термин) по ряду причин:

  • Этот проект изначально предназначен для того, чтобы помочь мне освоить Java. Расширение рамок проекта ослабит мой опыт работы с "базовым" языком и, возможно, увеличит соблазн заняться "программированием грузового культа".
  • Если этот проект когда-либо будет распространен среди других пользователей (по общему признанию, маловероятно, но все же!), Я не хочу заставлять их устанавливать больше, чем ядро ​​Java.
  • Я просто не знаю, как устанавливать расширения (надстройки? Модули?) В Java - один шаг за шагом!

По тем же причинам установка Microsoft SQL Server не будет продуктивной.

Этот ответ выглядит близко к тому, к чему я стремлюсь; однако, это дает ошибку:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/?user=root&password=rootpassword

и попытка "jdbc:file://targetFile.sql" дает похожую ошибку.

Я видел термин "встроенная" база данных, которая, я думаю, является подмножеством "локальной базы данных" (то есть локальная база данных хранится в той же системе - встроенная база данных - это локальная база данных, которая используется только одним приложением) - если у меня неверные определения, поправьте меня!

4 ответа

Решение

Скорее всего, причина, по которой вы получаете ошибку, связана с тем, что вы не регистрируете драйвер (используя отражение...) перед тем, как фактически использовать его для установления соединения и так далее.

Предположительно, вы захотите сделать что-то вроде Class.forName("driver")

а затем приведите его, если необходимо, и затем зарегистрируйте его в DriverManager перед вызовом getConnection() метод.

Вот очень полезная ссылка, которая может помочь вам в решении проблемы:

http://www.kfu.com/~nsayer/Java/dyn-jdbc.html

Однако, если вы действительно хотите использовать локальную базу данных / файл, возможно, вы захотите взглянуть на SQLite, это может быть одним из способов сделать это, хотя я рекомендую использовать подход MySQL, так как его гораздо проще настроить и узнайте, как все работает с JDBC.

Если вы все еще рассматриваете SQLite, проверьте это:

Java и SQLite

Я вижу, что вам нужно некоторое руководство по импорту внешних файлов.jar в ваш код (т.е. сторонние библиотеки, подобные тем, которые вы будете использовать для драйвера JDBC). Используете ли вы IDE (например, Eclipse, Netbeans и т. Д.) Или пишете в текстовом редакторе и компилируете вручную?

Недавно появилось несколько встроенных баз данных на чистом Java, которые имеют очень простой интерфейс, обычно java.util.Mapне включайте использование JDBC или других артефактов SQL и храните их данные в одном файле или каталоге:

Основным недостатком является то, что большинство таких баз данных предоставляют только простую модель ключ-значение.

JDK Java не включает ни реализацию базы данных, ни драйверов для доступа к ней. Он предоставляет JDBC только в качестве абстракции для подключения к "базе данных". Вам решать включить все необходимые библиотеки в ваш код.

Если вы хотите иметь автономный код, вы можете просто включить.jar-файл встраиваемой базы данных в ваш путь к классам. Таким образом, вы можете создать экземпляр базы данных в своем коде и минимизировать внешние зависимости.

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

Вы можете найти здесь пример того, как встроить HSQLDB в ваш код.

DBC может использоваться с любой базой данных, которая имеет драйвер JDBC, который не обязательно является базой данных в "сетевом режиме", он также может использоваться со встроенными базами данных.

Вот некоторые Java и встраиваемые базы данных:

http://www.h2database.com/html/main.html

http://db.apache.org/derby/

http://hsqldb.org/

Другие вопросы по тегам