Java - JDBC在Eclipse中运行而不是CL

时间:2012-06-27 01:17:10

标签: java jdbc

因此,下面的代码在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."; 
    }

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分: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();

    }

答案 3 :(得分:0)

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

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

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

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

或者,在某处创建一个带有jar文件的“lib”目录并执行以下操作:

java -cp "classes:lib/*"  MainClass

当java看到*之类的时候,它假定你想要找到指定目录中的所有jar文件。

答案 4 :(得分:0)

尝试:java -cp /path/to/jdbc/driver.jar:。 YourMainClass