我试图创建一个允许我通过JDBC连接到mySQL DB的类,但Connection返回的对象为null。我相信错误是我不在异常中使用错误信息消息,而是返回空值。
删除return null;
语句导致错误:此方法必须返回类型为Connection的结果
return conn;
} catch (Exception e) {
// return null;
e.printStackTrace();
}
}
同时添加return null;
和e.printStackTrace();
会导致无法访问代码错误
return conn;
} catch (Exception e) {
return null;
e.printStackTrace();
}
我的代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ServerConn
{
public Connection OpenDatabase() {
try {
Class.forName( "com.mysql.jdbc.Driver" ) ;
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/promitheas?user=me&password=iwontsay") ;
return conn;
} catch (Exception e) {
return null;
}
}
public ResultSet dbQuery(String sql)
{
Connection cn = OpenDatabase();
if (!(cn == null)){
try {
Statement stmt = cn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
return rs;
} catch (Exception e) {
return null;}
}
return null;
}
public ServerConn(){}
}
答案 0 :(得分:1)
return conn;
} catch (Exception e) {
return null; //returning
e.printStackTrace(); // what should I do as you are already returning.
}
这是非法的。导致Unreachable code error
,因为您在return
return conn;
} catch (Exception e) {
e.printStackTrace();
return null;
}
此外,从catch块返回的内容有点像设计问题。重新思考一次。
答案 1 :(得分:1)
使用单个return语句更好(更少混淆)。
public Connection OpenDatabase() {
Connection conn =null;
try {
Class.forName( "com.mysql.jdbc.Driver" ) ;
conn = DriverManager.getConnection("jdbc:mysql://localhost/promitheas?user=me&password=iwontsay") ;
} catch (Exception e) {
e.printStackTrace();
}
return conn;//returns null in case of exception.
}