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