2015-06-27 6 views
1

Я новый на Java.Jar connect with JDBC

Я закончил свою программу Java с помощью Netbeans, которая соединяется с сервером mysql с помощью JDBC (jdbc:mysql://localhost/inventory";) и построила Jar.

Когда я запускал банку, похоже, не подключается mysql, что мне делать? Должен ли я изменить localhost на IP-адрес компьютера?

СООБЩЕНИЕ

+0

Подробнее здесь. Что значит «не подключиться» - какое сообщение об ошибке вы получаете? Это поиск базы данных, но не подключение или, к сожалению, не удается найти базу данных. – MrB

+0

Он работает, если банка работает на серверном компьютере (подключен к db). но когда я копирую файл jar на другой компьютер в той же сети, он не будет подключаться. –

+0

Я решил эту проблему. Поэтому я должен скопировать соединительную банку на другой компьютер. Кто-нибудь знает, как построить эти банки в 1 банке? Так что мне не нужно копировать коннектор jar –

ответ

0

Нужна ли вам пользователь и пароль? Если это так, вам может потребоваться добавить его в строку соединения следующим образом:

jdbc:mysql://localhost/inventory?user=bandi&password=yourpass 
0

Выполняется ли оно в netbeans, если выполнено? если да, похоже, вы не включаете сервер базы данных при запуске файла .jar. сначала попробуйте открыть сервер mysql, а затем запустите приложение. В другом случае, если он не работает во время усложнения в netbeans, это означает, что у вас есть проблемы в вашем соединении и вы пытаетесь отключить брандмауэр или антивирус.

+0

Мой сервер всегда на сэре, но на другом компьютере не было данных –

0

Первая вероятная проблема заключается в URL вы используете:

, который должен быть таким:

jdbc:mysql://[my-sql-server-ip]:3306/inventory 

обычно для небольших приложений, которые вы можете поместить сервер-IP и сервер-порт в .properties рядом с файлом jar. Если вы не хотите иметь этот файл, у вас может быть очень простая форма GUI при запуске приложения, чтобы получить сервер-ip и сервер-порт от пользователя. (Не делайте жестким, если это не приложение для конечного пользователя. Получите ввод просто с помощью JOptionPane.ShowInputDialog (...) и динамически введите URL-адрес вашего подключения на основе ввода пользователя.)

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

Есть два способ решения:

  1. Уродливый, но простой способ: скачать исходные файлы для соединителя моего-SQL с сайта моего-SQL и поставить коды всех исходные в вашем приложении, а затем может создать файл Big Fatty jar, который содержит классы соединителя для my-sql.

Это не выбор экспертов, потому что философия JDBC является: Не рассчитывайте свои коды слоя базы данных к конкретной базе данных, и когда вы впрыскивать источник моих-SQL разъема в вашем проекте, вы так связаны с этим. Также, если вы хотите обновить соединитель my-sql для своего проекта, вам необходимо перекомпилировать свой проект. Я не могу сосчитать недостатки этого решения, вы можете прочитать об этом сами.

  1. Лучше всего: поставить манифест в проект (тогда он будет в вашем файле jar файла), чтобы объявить зависимости пути к курсу. Затем создайте папку рядом с вашим выходным файлом jar, который содержит соединитель и, возможно, другие зависимости для вашего проекта.

Например, в корневой папке:

root-folder 
+ [your output jar name].jar 
+ [lib folder name] 
    + mysql-connector-java-[your version].jar 

и записи для манифеста.MF файл:

Manifest-Version: 1.0 
Class-Path: [lib folder name]/mysql-connector-java-[your version].jar 
Main-Class: [fully qualified package and class name without .java to your main class] 

, например:

Main-Class: com.staefi.main.App 

Какого App.java класс с основным методом, чтобы запустить программу.

Другой совет: поместите файл MANIFEST.MF в корневую папку src вашего проекта внутри папки META-INF. Например:

src 
+ META-INF 
    + MANIFEST.MF 
+ [your packages start here] 

И, наконец, вы можете заархивировать ROOT-FOLDER, чтобы создать портативный выход вашего проекта и зависимостей.

Также можно создать файл bat/sh для сохранения пути к классу и выполнения вашего файла jar, но он настолько похож на описанный выше. Если бы вы, я бы не вводил классы соединителя в мой выходной файл jar.

Удачи.