2015-07-08 1 views
4

В настоящее время я изучаю Java и качаюсь и при этом пытаюсь создать настольное приложение.
Как часть этого приложения, я настроил базу данных mysql, к которой подключено приложение, однако я не уверен, как это будет работать, если я буду распространять приложение для других пользователей, как бы создать базу данных, они могут использовать их в своей системе, если они не установлены mySQL или инициирована база данных.
Помощь с этим была бы высоко оценена.Распределенная Java-приложение для рабочего стола mySQL-база данных

ответ

1

Вы должны использовать встроенную базу данных. Я бы не рекомендовал MySQL для коммерческих приложений, потому что это очень дорого. Попробуйте использовать HSQLDB - очень быстро и не имеет утечек памяти (по крайней мере, я не заметил).

Вот пример реализации:

private static Connection conn; 

/** 
* Gets database connection. 
* 
* @return the database connection. 
* @throws SQLException if database error occurs. 
*/ 
public static Connection getConnection() throws SQLException { 

    if (conn == null || conn.isClosed()) { 
     conn = DriverManager.getConnection("jdbc:hsqldb:file:data", "somedb", ""); 
     // conn.setAutoCommit(false); 
    } 
    return conn; 
} 

Убедитесь, что вы добавили hsqldb.jar файл в библиотеках.

+0

Вы имеете в виду 'Enterprise Edition' от * MySQL для коммерческих приложений *? –

+0

Я где-то участвовал в обсуждении использования MySQL для коммерческих приложений - и обнаружил, что для небольших проектов это слишком дорого. Так что переключился на HSQLDB - это здорово. Также попробовал JavaDB/Derby - но испытал утечку памяти. Не уверен в настоящее время о лицензировании MySQL, вы должны проверить себя. –

+0

Существует бесплатная версия Community Edition. Так как это может быть слишком дорого? –

1

Я бы предложил посмотреть на SQLite вместо mySQL. Похоже, вам нужна отдельная база данных, для которой не требуется запуск сервера. Я сделал как Java (и Android), Swing, так и C#. Я обнаружил, что SQLite - лучшее решение для базы данных на разных платформах, а не для установки сервера.

+0

Было бы легко преобразовать из mySQL, который я сейчас использую для SQLite? –

+0

Я нашел, что это очень просто, хотя есть кривая обучения, как с чем-либо еще. – SteveFerg

+0

Что бы это ни стоило, мы также успешно использовали SqlLite с Borland Delphi (теперь Embarcadero XE). Продукт был распространенным приложением для боулинга. Основной базой данных был SQL Server. Но каждая пара дорожек имела базу данных SQLLite для поддержки локальной резервной копии имен и оценок (в случае, если соединение с MSQL когда-либо снижалось). – paulsm4

1

У вас есть три варианта:

  1. Каждый рабочий стол будет иметь свою собственную, частную базу данных.

  2. Каждый рабочий стол разговаривает с одним удаленным сервером базы данных.

  3. Каждый настольный компьютер разговаривает с веб-интерфейсом на удаленном сервере базы данных.

«Вариант 3» является наиболее распространенным сценарием. Одним из вариантов является «веб-приложение» (в этом случае вам вообще не нужно приложение «Swing desktop»). Другим вариантом является «толстый клиентский Java-апплет». Вы можете использовать Swing, большая часть обработки будет локальной ... но ваш Swing-апплет будет связываться с удаленной базой данных для доступа к базе данных. Вы можете рассмотреть интерфейс REST.

Если вы действительно хотите, чтобы опция 1 (приложение и база данных полностью локализована на рабочем столе), я бы определенно пошел с embedded database. Sqlite - отличный выбор. На самом деле Android использует Sqlite. HSQLDB или даже MS-Access также может быть хорошим выбором.

+0

Что мне нужно - это вариант 1, где каждый пользователь имеет свою собственную и уникальную базу данных –

0

Что касается вашей проблемы, я бы спросил, делитесь ли вы информацией о базе данных среди пользователей вашего приложения. Я имею в виду, если вам нужны данные, централизованные в одной базе данных, пользователи могут получить доступ через приложение Swing рабочего стола.

Если это так, тогда вам понадобится другое приложение, которое предоставит информацию, хранящуюся в базе данных (на данный момент вы можете использовать веб-службы), тогда вам просто нужно будет реализовать код клиента Web-сервиса для взаимодействия с вашей базой данных через приложение Swing.

Теперь, если вы хотите использовать независимое приложение с базой данных для каждого пользователя.Тогда вы можете пойти на много вариантов таких:

Надеется, что это может дать вам ориентироваться в то, что вам нужно реализовать.

Счастливое кодирование.

Смежные вопросы