简体   繁体   English

Java中的方法返回null

[英]Method in Java return null

I made a class (OracleConnector2Test) that receives as parameter 2 values, makes a query in the base and returns the result of that query in the Eclipse console.我创建了一个类 (OracleConnector2Test),它接收作为参数 2 的值,在基础中进行查询并在 Eclipse 控制台中返回该查询的结果。 In the class (OracleConnector2TestBuscaEstrategias) I instantiate the class (OracleConnector2Test), I pass the parameters ("179", "319") and have Eclipse display the result on the console screen.在类 (OracleConnector2TestBuscaEstrategias) 中,我实例化了类 (OracleConnector2Test),传递了参数(“179”、“319”)并让 Eclipse 在控制台屏幕上显示结果。 The values returned are correct, but in the Eclipse console the message:返回的值是正确的,但在 Eclipse 控制台中的消息:

Query Result: null.查询结果:空。

I can not understand why the message (Query Result: null) if the query in the database returns 2 values (Facilities 179 and Consumer.GOV Clear TV 319).如果数据库中的查询返回 2 个值(设施 179 和 Consumer.GOV Clear TV 319),我无法理解为什么会出现消息(查询结果:空)。

Follow below the code in Java and Print Screen of Console Eclipse.按照下面的 Java 代码和 Console Eclipse 的 Print Screen 进行操作。

Class OracleConnector2Test类 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;
  }
}

Class OracleConnector2TestBuscaEstrategias类 OracleConnector2TestBuscaEstrategias

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);       
   }
}

查询结果为空

you did String resultado;你做了String resultado; then return resultado;然后return resultado; never assigning anything to it.从不分配任何东西给它。

Assign the result to resultdao .将结果分配给resultdao

something like this:像这样:

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();

Actually you'd be better off returning a List<String> :实际上你最好返回一个List<String>

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);
  }
  ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM