【发布时间】:2018-11-21 17:04:07
【问题描述】:
通过以下代码向 Oracle DB 发送查询,并应将查询结果返回为JSON:
Connection conn ;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:dbname";
conn = DriverManager.getConnection(url,"username","pwd");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM table4 where ID = '5'");
while (rs.next()) {
String s = rs.getString("*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(s);
}
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是,String s 的值始终为空。
我去过解决方案here,但它不适用于从表中选择*。
【问题讨论】:
-
ResultSet 是列的集合,因此getString(...) 只会作用于一列。
-
@PaulBenn 那么如何在不一一提及的情况下返回所有列?
-
问题24943894 已经解决了这个问题。在提出此类问题之前,最好先查看documentation - 请参阅getMetadata() 方法。
-
String s = rs.getString("*");这不起作用,您必须设置尽可能多的数据库表字段的变量,否则使用 java POJO 类