import java.sql.*;
public class ConnDB {
private Connection ct = null;
public static void main(String args[]){
ConnDB cdb = new ConnDB();
System.out.println(cdb.getConn());
}
public Connection getConn()
{
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=spdb1","sa","123456");
System.out.println(ct);
}catch(Exception e)
{
e.printStackTrace();
}
return ct;
}
}
代码如上,最后得到的ct值为null,一直找不到原因,请各位帮忙解释下
你在类里面声明了一个 private Connection ct = null;
在try{}里面又一个 Connection ct
如果你把第一行的声明去掉,会报错,return ct 找不到 ct;
如果我这么说你还不能看出问题
那么这么说,try 块里面的 Connection ct 相当于局部变量,你在try块外面 return ct;那肯定找不到你要返回的那个DriverManager获得的 Connection 对象;你这里 return ct 之所以没错,那是因为它返回的是类声明的private Connection ct,而这是一个null
修改:1.删除 private Connection ct = null;
2.在try块外面声明Connection ct = null; try块内 ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=spdb1","sa","123456");
[code="java"]
coder!
[/code]
:arrow: