连接对象返回空值

时间:2014-08-11 08:58:58

标签: java mysql eclipse jdbc connection

我试图创建一个允许我通过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(){}
    }

2 个答案:

答案 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.
  }