在 Oracle SQL 上运行的通用语句:使用 Java 的数据库
Posted
技术标签:
【中文标题】在 Oracle SQL 上运行的通用语句:使用 Java 的数据库【英文标题】:Generic Statment Running on Oracle SQL: DB Using Java 【发布时间】:2019-11-20 13:44:16 【问题描述】:我正在开发一个用 Java 构建并使用 Oracle SQL DB 的系统。 有些用户需要直接在 DB 上运行语句(查询、更新、删除等),而无需自己访问 DB。
因此,我正在尝试开发一个代码,他们将在其中运行一条语句,并将结果从数据库返回给他们。
不幸的是,每个在线示例都要求开发人员了解表格,我需要我的解决方案来适应每个查询或他们将运行的任何其他语句。
提前致谢。
这是一个演示我的问题的代码示例:
ResultSet rs = stmt.executeQuery(query);
while (rs.next())
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + ", " + supplierID +
", " + price + ", " + sales +
", " + total);
【问题讨论】:
最好为此类查询提供示例,并用您附加的代码澄清您的问题! 为什么开发人员需要知道表格?这不是每个在线示例的要求。 那么我如何在没有 getInt("SOMTHING") 的 getFloat("SOMTHING") 的情况下检索结果,这显然是非常特定于表@LowKeyEnergy @MohamedSweelam 无法附上我自己的 NDA 原因...但我相信这段代码阐明了对另一个表的查询将完全失败 【参考方案1】:您正在尝试根据列名获取结果。如果不知道列名,可以通过索引号获取结果。
Object x = resultSet.getObject(0);
您还可以获得有关可用列的信息:
ResultSetMetaData metaData = resultSet.getMetaData();
https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html
ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next())
for (int i=1; i < metaData.getColumnCount(); i++)
Object x = resultSet.getObject(i);
【讨论】:
怎么样?你能分享一个例子吗? 添加了一个例子。 有没有办法获得列名?【参考方案2】:尝试根据索引号获取结果。
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next())
for (int i=1; i<rsmd.getColumnCount(); i++)
String result = rs.getString(i);
【讨论】:
【参考方案3】:您正在寻找一个通用的 SQL 接口。当我有这种需要时,我会寻找“开源 java 命令行工具来执行 SQL 语句”或“开源 java 命令行 SQL 客户端”。检查许可证并了解该工具中可用的内容。 将为您节省很多令人讨厌的细节。
如果你很幸运,这样的工具还支持列出所有数据库、表、列表表信息、SQL 语句历史记录等。
这不是您问题的直接答案,但可能会为您节省大量工作。
【讨论】:
以上是关于在 Oracle SQL 上运行的通用语句:使用 Java 的数据库的主要内容,如果未能解决你的问题,请参考以下文章