[英]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.