Jar连接JDBC

时间:2015-06-27 07:06:05

标签: java mysql netbeans jdbc

我是Java新手。

我使用Netbeans完成了我的Java程序,它使用JDBC (jdbc:mysql://localhost/inventory";)与mysql服务器连接并构建了Jar。

当我运行jar时,似乎不会连接mysql,我该怎么办?我应该将localhost更改为我的计算机IP吗?

由于

3 个答案:

答案 0 :(得分:0)

您需要用户名和密码吗?如果是这样,您可能需要将其添加到连接字符串,如下所示:

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

答案 1 :(得分:0)

如果符合要求,它是否在netbeans中运行?如果是,则运行.jar文件时似乎没有打开数据库服务器。尝试先打开mysql服务器,然后运行该应用程序。另一种情况,如果它在netbeans的补充过程中不起作用,则表示您在连接时遇到问题,或者尝试关闭防火墙或防病毒软件。

答案 2 :(得分:0)

第一个可能的问题是您正在使用的网址:

应该是这样的:

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

通常对于小型应用程序,您可以将server-ip和server-port放在jar文件附近的.properties文件中。如果您不想拥有此文件,则可以在应用程序启动时使用非常简单的GUI表单来获取用户的server-ip和server-port。 (如果这不是最终用户的应用程序,请不要努力。只需使用JOptionPane.ShowInputDialog(...)获取输入,并根据用户的输入动态创建连接URL。)

如果server-ip不是问题,通常第二个问题是my-sql的连接器jar文件不在应用程序的类路径中。

有两种解决方法:

  1. 丑陋但简单的方法:从my-sql的站点下载my-sql连接器的源文件,并将完整的源代码放在应用程序中,然后就可以建立一个Big Fatty jar文件其中包含my-sql的连接器类。
  2. 这不是专家的选择,因为JDBC的哲学是: 不要将您的数据库层代码依赖于特定的数据库,并且当您在项目中注入my-sql连接器的源时,您就是这样耦合的。此外,如果要更新项目的my-sql连接器,则必须重新编译项目。我无法计算这个解决方案的不足之处,你可以自己阅读。

    1. 更好的方法是:在项目中放置一个清单(然后它将在你的输出jar文件中)来声明类路径依赖项。然后在输出jar文件附近创建一个文件夹,其中包含连接器以及项目的其他依赖项。
    2. 例如在根文件夹中:

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

      和MANIFEST.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文件放在META-INF文件夹中项目的src文件夹的根目录。例如:

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

      最后,您可以压缩ROOT-FOLDER以创建项目和依赖项的可移植输出。

      另一种方法是创建一个bat / sh文件来维护类路径和jar文件的执行,但它与上面的方式非常相似。如果你是我,我不会在输出jar文件中注入连接器的类。

      祝你好运。