0

我有一个简单的 JDBC 代码。

static Connection c;
static PreparedStatement ps;

public static void initializeDB() throws IOException, ClassNotFoundException, SQLException {
    Properties prop = new Properties();
    prop.load(new FileInputStream("dbconn.properties"));
    String connurl = prop.getProperty("connurl");
    String driver = prop.getProperty("driver");
    String username = prop.getProperty("username");
    String password = prop.getProperty("password");
    System.out.println(driver); //prints "com.mysql.jdbc.Driver"
    Class.forName(driver);
    c = DriverManager.getConnection(connurl, username, password);
  1. 但我越来越

    java.lang.ClassNotFoundException:“com.mysql.jdbc.Driver”在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader。 findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader .java:248) 在 java.lang.Class.forName0(Native Method) 在 java.lang.Class.forName(Class.java:169) 在 testapp.DBUpdater.initializeDB(Testapp.java:71) 在 testapp.Testapp。主要(Testapp.java:38)

从 print 语句中可以看出,可以完美地访问属性值。当我直接用字符串值替换变量时,它工作正常!!

  1. 我应该什么时候使用

    prop.load(new FileInputStream(System.getProperty("dbconn.properties")));

  2. 当我从 mysql-connector jar 文件中查看 Driver 类时,我期待看到一些静态代码,但没有找到任何东西。

4

2 回答 2

1

看起来字符串有值"com.mysql.jdbc.Driver"(注意双引号)而不是com.mysql.jdbc.Driver.

删除这些引号,它应该可以工作。

于 2012-09-12T16:55:52.877 回答
0
  1. 尝试修剪属性的值。

  2. 我会以静态方式加载属性。

  3. 我不明白你为什么要查看这个 JAR ......

例子:

class Database {

    private final static Properties properties;
    private static Connection c;
    private static PreparedStatement ps;

    static {
        properties = new Properties();
        properties.load(new FileInputStream("dbconn.properties"));
    }

    public static void init() {
        String connurl = properties.getProperty("connurl").trim();
        String driver = properties.getProperty("driver").trim();
        String username = properties.getProperty("username").trim();
        String password = properties.getProperty("password").trim();
        Class.forName(driver);
        c = DriverManager.getConnection(connurl, username, password);
    }

}
于 2012-09-12T11:55:03.870 回答