import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Jdbc {
public static void main(String args[]) {
FileInputStream in = null;
Connection con = null;
try {
Properties props = new Properties();
in = new FileInputStream("/external/configuration/dir/db.properties");
props.load(in);
in.close();
String driver = props.getProperty("jdbc.driver");
if (driver != null) {
Class.forName(driver);
}
String host = props.getProperty("jdbc.host");
String port = props.getProperty("jdbc.port");
String database = props.getProperty("jdbc.database");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
con = DriverManager.getConnection(host,port,database,username, password);
} catch (Exception ex) {
Logger.getLogger(Jdbc.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException ex) {
Logger.getLogger(Jdbc.class.getName()).log(Level.SEVERE, null, ex);
}
}
if (con != null) {
try {
con.close();
} catch (Exception ex) {
Logger.getLogger(Jdbc.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
错误是:
1错误
C:\Users\Desktop>javac Jdbc.java
Jdbc.java:32: cannot find symbol
symbol : method getConnection(java.lang.String,java.lang.String,java.lang.Strin
g,java.lang.String,java.lang.String)
location: class java.sql.DriverManager
con = DriverManager.getConnection(host,port,database,username, passw
ord);
答案 0 :(得分:3)
代码不会在代码中处理任何已检查的异常,如ClassNotFoundException,SQLException等,这就是编译器报告错误的原因。
尝试使用try / catch块包围main方法中的代码并编译程序。这应该有用。
注意:提供完整的信息(您获得的错误),以便其他人可以更好地帮助您。
答案 1 :(得分:2)
这是您的程序的编译版本 试着找出差异。 主要内容是导入,异常处理
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Jdbc {
public static void main(String args[]) {
FileInputStream in = null;
Connection con = null;
try {
Properties props = new Properties();
in = new FileInputStream("/external/configuration/dir/db.properties");
props.load(in);
in.close();
String driver = props.getProperty("jdbc.driver");
if (driver != null) {
Class.forName(driver);
}
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
con = DriverManager.getConnection(url, username, password);
} catch (Exception ex) {
Logger.getLogger(Jdbc.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException ex) {
Logger.getLogger(Jdbc.class.getName()).log(Level.SEVERE, null, ex);
}
}
if (con != null) {
try {
con.close();
} catch (Exception ex) {
Logger.getLogger(Jdbc.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
答案 2 :(得分:0)
根据http://dev.mysql.com/doc/refman/5.0/en/connector-j-usagenotes-basic.html,您应该使用Class.forName(driver).newInstance();
代替Class.forName(driver);
。
答案 3 :(得分:0)
在我的情况下,sbt run
工作正常,我在sbt test
中收到错误,因为DriverManager.scala找不到jdbc驱动程序:
java.sql.SQLException:找不到合适的jdbc驱动程序:postgresql
我通过在代码中添加以下行来解决这个问题(在运行模式下正确使用postgresql驱动程序)
DriverManager.registerDriver(new org.postgresql.Driver());
我希望它有所帮助。