Создание новой локальной базы данных с 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, проверьте это:
Я вижу, что вам нужно некоторое руководство по импорту внешних файлов.jar в ваш код (т.е. сторонние библиотеки, подобные тем, которые вы будете использовать для драйвера JDBC). Используете ли вы IDE (например, Eclipse, Netbeans и т. Д.) Или пишете в текстовом редакторе и компилируете вручную?
Недавно появилось несколько встроенных баз данных на чистом Java, которые имеют очень простой интерфейс, обычно java.util.Map
не включайте использование JDBC или других артефактов SQL и храните их данные в одном файле или каталоге:
Основным недостатком является то, что большинство таких баз данных предоставляют только простую модель ключ-значение.
JDK Java не включает ни реализацию базы данных, ни драйверов для доступа к ней. Он предоставляет JDBC только в качестве абстракции для подключения к "базе данных". Вам решать включить все необходимые библиотеки в ваш код.
Если вы хотите иметь автономный код, вы можете просто включить.jar-файл встраиваемой базы данных в ваш путь к классам. Таким образом, вы можете создать экземпляр базы данных в своем коде и минимизировать внешние зависимости.
Вы можете найти здесь список встраиваемых баз данных Java
Вы можете найти здесь пример того, как встроить HSQLDB в ваш код.
DBC может использоваться с любой базой данных, которая имеет драйвер JDBC, который не обязательно является базой данных в "сетевом режиме", он также может использоваться со встроенными базами данных.
Вот некоторые Java и встраиваемые базы данных: