Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的方法返回null_Java - Fatal编程技术网

Java中的方法返回null

Java中的方法返回null,java,Java,我创建了一个类(OracleConnector2Test),它接收作为参数2的值,在基中进行查询,并在Eclipse控制台中返回该查询的结果。 在类(OracleConnector2TestBuscaEstrategias)中,我实例化了该类(OracleConnector2Test),传递参数(“179”、“319”),并让Eclipse在控制台屏幕上显示结果。 返回的值是正确的,但在Eclipse控制台中会显示以下消息: 查询结果:空 如果数据库中的查询返回2个值(Facilities 17

我创建了一个类(OracleConnector2Test),它接收作为参数2的值,在基中进行查询,并在Eclipse控制台中返回该查询的结果。 在类(OracleConnector2TestBuscaEstrategias)中,我实例化了该类(OracleConnector2Test),传递参数(“179”、“319”),并让Eclipse在控制台屏幕上显示结果。 返回的值是正确的,但在Eclipse控制台中会显示以下消息:

查询结果:空

如果数据库中的查询返回2个值(Facilities 179和Consumer.GOV Clear TV 319),我无法理解为什么会显示消息(查询结果:null)

下面是控制台Eclipse的Java和打印屏幕中的代码

类OracleConnector2Test

public class OracleConnector2Test {

String resultado;

public String returnDb(String Id_Estrategia1, String Id_Estrategia2) {
    // Connection URL Syntax: "jdbc:mysql://ipaddress:portnumber/db_name"
    String dbUrl = "jdbc:oracle:thin:@10.5.12.116:1521:desenv01";

    // Database Username
    String username = "bkofficeadm";

    // Database Password
    String password = "bkofficeadmdesenv01";

    // Query to Execute
    String query = "SELECT  DS_ESTRATEGIA, ID_ESTRATEGIA" + " FROM TB_BKOFFICE_ESTRATEGIA"
            + " WHERE ID_ESTRATEGIA  IN (" + Id_Estrategia1 + ", " + Id_Estrategia2 + ")";

    try {
        // Load mysql jdbc driver
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // Create Connection to DB
        Connection con = DriverManager.getConnection(dbUrl, username, password);

        // Create Statement Object
        Statement stmt = con.createStatement();

        // Execute the SQL Query. Store results in ResultSet
        ResultSet rs = stmt.executeQuery(query);

        // While Loop to iterate through all data and print results
        while (rs.next()) {
            String DS_ESTRATEGIA = rs.getString(1);
            String ID_ESTRATEGIA = rs.getString(2);
            System.out.println(DS_ESTRATEGIA + "  " + ID_ESTRATEGIA);
        }
        // closing DB Connection
        con.close();
    } catch (ClassNotFoundException e) {

        e.printStackTrace();

    } catch (SQLException e) {

        e.printStackTrace();

    }
    return resultado;
  }
}
类OracleConnector2TestBuscaeStrageias

public class OracleConnector2TestBuscaEstrategias {

public static void main(String[] args) {        
        String query;

        OracleConnector2Test t = new OracleConnector2Test();
        query = t.returnDb("179", "319");
        System.out.println("Query Result: " + query);       
   }
}

您执行了
字符串resultado
然后
返回resultado从不向其分配任何内容

将结果分配给
resultdao

大概是这样的:

StringBuilder sb = new StringBuilder();
while (rs.next()) {
  String DS_ESTRATEGIA = rs.getString(1);
  String ID_ESTRATEGIA = rs.getString(2);
  System.out.println(DS_ESTRATEGIA + "  " + ID_ESTRATEGIA);
  sb.append(DS_ESTRATEGIA + "  " + ID_ESTRATEGIA + "\n");
}
resultdao = sb.toString();
实际上,您最好返回一个
列表

List resultdao=new ArrayList();
public List returnDb(字符串Id_Estrategia1,字符串Id_Estrategia2){
...
while(rs.next()){
字符串DS_estategia=rs.getString(1);
字符串ID_estategia=rs.getString(2);
System.out.println(DS_ESTRATEGIA+“”+ID_ESTRATEGIA);
结果dao.add(DS_ESTRATEGIA+“”+ID_ESTRATEGIA);
}
...

你从来没有分配过
resultado
,所以输出是正确的
String resultado;
然后
return resultado;
从来没有分配过任何东西打印值和返回值是不一样的。虽然…@Kakashi-Sensei刚刚添加了一条评论,但是其他人在解释发生了什么事上击败了我正在重新设置返回类型。
List<String> resultdao = new ArrayList<>();

public List<String> returnDb(String Id_Estrategia1, String Id_Estrategia2) {
  ...
  while (rs.next()) {
    String DS_ESTRATEGIA = rs.getString(1);
    String ID_ESTRATEGIA = rs.getString(2);
    System.out.println(DS_ESTRATEGIA + "  " + ID_ESTRATEGIA);
    resultdao.add(DS_ESTRATEGIA + "  " + ID_ESTRATEGIA);
  }
  ...