rs.getString()是否返回字符串类型?这段代码有什么问题?

时间:2014-07-21 06:19:08

标签: java sql oracle jdbc

我正在使用oracle数据库。我试图访问一个只有一列包含一些名称的表。虽然我已将dept_name_list.getString(“DEPT_NAME”)返回的结果分配给字符串类型变量并返回它,但错误显示“该方法必须返回String类型的结果”。

String get_dept_list()
{
    trivialFunctions.establishConnection();
    try
    {
        stmt = conn.createStatement();
        sql = "select * from DEPARTMENT_LIST;";
        ResultSet dept_name_list = stmt.executeQuery(sql);
        if(dept_name_list.next())
        {
            String name = dept_name_list.getString("DEPT_NAME");
            return name;
        }
    }
    catch (SQLException e)
    {
        System.out.println("Problem in finding the dept_name_list");
    }
}

代码有什么问题?我需要访问String名称,这部分是否返回一个String名称dept_name_list.getString("DEPT_NAME");

1 个答案:

答案 0 :(得分:3)

原始代码:

String get_dept_list()
{
    trivialFunctions.establishConnection();
    try
    {
        stmt = conn.createStatement();
        sql = "select * from DEPARTMENT_LIST;";
        ResultSet dept_name_list = stmt.executeQuery(sql);
        if(dept_name_list.next())
        {
            String name = dept_name_list.getString("DEPT_NAME");
            return name;
        }
    }
    catch (SQLException e)
    {
        System.out.println("Problem in finding the dept_name_list");
    }
}

该方法被声明为返回String。但是,唯一的return语句位于if内。您必须确保所有分支return都是值。这样做的一种方法是在方法结束时return null

String get_dept_list()
{
    trivialFunctions.establishConnection();
    try
    {
        stmt = conn.createStatement();
        sql = "select * from DEPARTMENT_LIST;";
        ResultSet dept_name_list = stmt.executeQuery(sql);
        if(dept_name_list.next())
        {
            String name = dept_name_list.getString("DEPT_NAME");
            return name;
        }
    }
    catch (SQLException e)
    {
        System.out.println("Problem in finding the dept_name_list");
    }

    // In case the table is empty, return null:
    return null;
}

顺便说一句 - 您的代码是泄露的陈述 - 您必须关闭stmtdept_name_list