【发布时间】:2014-06-11 18:19:18
【问题描述】:
这是下面给出的程序的输出:
Connection made!
Schema Name:null
Successfully connected to null
Releasing all open resources ...
在establishConnection() 中,conn 被初始化为null。那么 try 块中的第一条语句应该与数据库建立连接,然后第三条语句打印 conn 的当前模式的名称。
根据API,getSchema() 返回当前模式名称,如果没有则返回 null。
这意味着没有与conn关联的架构(我认为架构名称与数据库名称相同)?谁能建议我的预期是否正确,并建议为什么没有与 conn 关联的架构或 null?
public class ConnectDB {
private Connection establishConnection() throws SQLException {
Connection conn = null;
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test_final1", "root", "password");
System.out.println("Connection made!");
System.out.println("Schema Name:"+conn.getSchema()+"\n");
} catch (SQLException sqle) {
System.err.println("SQL Exception thrown while making connection");
printSQLException(sqle);
}
return conn;
}
public static void main(String[] args) {
ConnectDB cdb= new ConnectDB();
Connection myconn=null;
try{
myconn=cdb.establishConnection();
if(myconn!=null) System.out.println("Successfully connected to " + myconn.getSchema());
}catch (SQLException e) {
ConnectDB.printSQLException(e);
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
ConnectDB.closeConnection(myconn);
}
}
【问题讨论】:
-
这个问题不是重复的。另一个问题是关于 Android 的,非常关于 JTDs 驱动程序(我没有使用过)。我发布这条评论是为了澄清,因为我收到一条评论说它是重复的,在我解释后被删除了。
-
你加载
MYSQL Driver的代码在哪里 -
人!问题不在于获得
null连接,而在于从执行Connection#getSchema方法获得null返回值。
标签: java mysql jdbc null database-connection