0

因此,下面的代码在 Eclipse 中有效,但在 CL 中无效。我认为它与 JDBC 连接器有关,但我不确定。它没有给我任何错误,只是没有执行。例如,它甚至不会打印“EDF”。有什么建议么?

    //Connection conn = null;
    String url = "jdbc:mysql://localhost/";
    String db = "db";
    String driver = "com.mysql.jdbc.Driver";
    String table = "order_queue";
    Connection conn = null;

    // Upload trade data to order_queue table
    try {
        Class.forName(driver);
        System.out.print("EDF");
        try {
            conn = DriverManager.getConnection(url+db,"root","");
            Statement st = conn.createStatement();
            String sql = "INSERT INTO " + table + " (name) VALUES("APPLE");
            st.executeUpdate(sql);
            conn.close();

        } catch (SQLException s) {
            s.printStackTrace();
            orderMessage = "ERROR: Problem executing order.  Please try again!";
        }
    } catch (ClassNotFoundException cnfe){
        orderMessage = "ERROR: Problem connecting to OMS database.  Contact technical support or try again later."; 
    }
4

5 回答 5

0

试试:java -cp /path/to/jdbc/driver.jar:。你的主类

于 2012-06-27T02:33:29.227 回答
0

原因是这一行:

Class.forName(driver);

MySQL JDBC 驱动程序不在您的类路径中。如果您想确保这是原因,请在代码中添加一行:

    } catch (ClassNotFoundException cnfe){
        orderMessage = "ERROR: Problem connecting to OMS database.  Contact technical support or try again later."; 
        cnfe.printStackTrace();

    }
于 2012-06-27T02:21:11.977 回答
0

如果它不打印 EDF,则说明您在加载库时遇到问题。您是否添加了对该库的引用?

于 2012-06-27T01:54:17.817 回答
0

我建议您在外部 try catch 块中捕获异常。因此,任何其他您不知道的异常都会被捕获并打印出来。您是否在 CL 类路径中加载了 mysql 连接器 java jar 文件?(顺便问一下,什么是 CL?)

于 2012-06-27T02:16:06.277 回答
0

这在 eclipse 中起作用的原因可能是因为您已将其添加到项目的 eclipse 类路径中,因此它会自动包含在您运行的任何主程序中。

对于命令行,请确保您的类路径设置正确:

java -cp classes:/path/to/driver.jar MainClass

这里重要的部分是“-cp /path/to/driver.jar”。“-cp”参数应该包括所有的 jars(在 *NIX 上用 : 分隔,在 windows 上用 ; 分隔)以及存储类的目录。

或者,使用您的 jar 文件在某处创建一个“lib”目录,然后执行以下操作:

java -cp "classes:lib/*"  MainClass

当 java 看到类似 * 时,它假定您要查找指定目录中的所有 jar 文件。

于 2012-06-27T02:28:22.963 回答