从.jar运行时,通过ODBC连接到我的数据库时出错

时间:2016-12-14 10:28:38

标签: java ms-access jdbc jdbc-odbc

我运行.jar时无法连接到我的数据库,但如果我在NetBeans中运行我的项目,我可以这样做。我正在使用JDBC-ODBC Bridge进行连接。这是我用于连接的功能。

public Statement connection(Statement st){
    try {
        // connection avec la base de donnée DataBase.
        // On charge le driver ODBC
        Properties props = new Properties();
        // pour pouvoir afficher les accents et les caractères spéciaux!!
        props.put ("charSet", "ISO-8859-15");
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        cnx = DriverManager.getConnection("jdbc:odbc:DataBase", props);
        st=cnx.createStatement();
        //JOptionPane.showMessageDialog(null,"connection ouverte avec     succès");
    }catch(Exception e)
    {
        System.out.println(e.getLocalizedMessage());
        return st;
    }
    return st;
}

示例图片:

enter image description here

1 个答案:

答案 0 :(得分:0)

当Java应用程序作为.jar文件分发给其他用户时,我们可能无法控制运行它的Java运行时环境(JRE)。如果应用程序对JRE版本有特定要求,那么它应该明确检查版本。

例如,使用JDBC-ODBC Bridge的应用程序必须在Java 7或更早版本下运行,因为该组件已从Java 8中删除。因此,应用程序代码应该执行以下操作:

int javaVersion = Integer.valueOf(
        System.getProperty("java.runtime.version").split("\\.")[1]);
if (javaVersion > 7) {
    System.out.printf(
            "This application is running under Java %d. " + 
            "Java 7 or earlier is required.%n", 
            javaVersion);
    System.exit(1);
}

java.com现在默认分发Java 8。大多数访问该网站并单击方便的“免费Java下载”按钮的用户几乎肯定会使用Java 8(或更新版本)。如果应用程序没有检查Java版本并轻率地尝试使用JDBC-ODBC Bridge,那么它将崩溃。

通过上述检查,用户将看到更有帮助的消息

C:\__tmp>java -jar JdbcOdbcTest.jar
This application is running under Java 8. Java 7 or earlier is required.

如果他们使用JRE for Java 7或更早版本运行它,它将起作用:

C:\__tmp>"C:\Program Files\Java\jre6\bin\java" -jar JdbcOdbcTest.jar
Welcome to our app!