gpt4 book ai didi

java - Java 有没有办法返回 ResultSet?

转载 作者:行者123 更新时间:2023-12-02 06:25:13 27 4
gpt4 key购买 nike

我发现Java不允许ResultSet作为数据类型返回。想请问执行查询后返回结果是否有更好的解决方案?

    try {
Class.forName("com.mysql.jdbc.Driver");

Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/shopping mall?zeroDateTimeBehavior=convertToNull", "root", "" );

java.sql.Statement stmt = con.createStatement() ;
String query = "SELECT * FROM shops WHERE SHOPNAME LIKE \'%" + shopName + "%\' ORDER BY shopname ASC"; // Select and sort using user input
ResultSet rs = stmt.executeQuery(query) ;

// How to return the result after executing the query?
}
catch ( SQLException err ) {
return null;
}

不要介意return null;部分。正在测试一些东西。基本上这是我目前的代码。执行查询后如何返回结果?

最佳答案

您需要为错误提供更好的上下文。例如,这是一个 JAX-WS Web 服务端点吗?不管怎样,正如跟踪中所述,您的错误是 Web 服务错误,而不是 JDBC 错误。发生此错误的原因有很多,通常与您为服务定义 API 的方式有问题有关。

您当然可以从方法返回 ResultSet,即使这是一个非常糟糕的主意,尤其是从 Web 服务端点。 ResultSet 无法序列化为 SOAP 消息。更一般地说,返回 ResultSet 会将实现细节泄露给方法的调用者。为什么他们应该知道您正在使用 JDBC?或者甚至您正在与关系(或任何)数据库进行对话?

更好的方法是使用 ResultSet 中的数据填充与您的域相关的模型对象,并且该对象将通过 JAXB 或您使用的任何方式序列化为 SOAP。或者您可能只是从数据库返回一些文本,在这种情况下 JAX-WS 知道要做什么。

此外,请确保对 SQLException 执行某些操作,以便可以跟踪实际 JDBC 错误的原因。

关于java - Java 有没有办法返回 ResultSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20603240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com