tmzhi1986 2011-03-04 22:01
浏览 236
已采纳

请帮忙解释下Collenction变量为空的原因

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,一直找不到原因,请各位帮忙解释下

  • 写回答

2条回答 默认 最新

  • iteye_2443 2011-03-05 13:54
    关注

    你在类里面声明了一个 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");

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突