我对整个SQL和Java事情都很陌生,但在这里我真的很困惑。
我有一个通过调用一些数组参数来调用的方法,如下所示
Method(String[], int, int[], int[])
我正在做一个ResultSet来检查是否有任何行可用,其中搜索项目的ID匹配。
ResultSet group = statement.executeQuery("SELECT * FROM `circulation` WHERE `ItemID` = "+itemID);
但是,我完全不知道如何构建方法。
String []和int []参数是存储在数据库中的内容,而标准int参数是itemID。我不知道如何正确地调用方法。
Darn,我以为我也做得很好。
答案 0 :(得分:2)
参数通常用于向被调用的方法提供信息。要从被调用的方法获取信息,通常使用返回值。
您的方法似乎搜索名为circulation
的数据库表中的行以获取给定的项ID。因此,项目ID应该是一个参数。找到的行应该是返回的值。因此,该方法的签名应为:
Circulation[] findByItemId(int itemId);
或者更好,使用集合而不是数组:
List<Circulation> findByItemId(int itemId);
什么是Circulation
?它是一个表示循环表中包含的行的类。因此,如果表包含ID,名称和项ID,则此类看起来像
public class Circulation {
private int id;
private String name;
private int itemId;
// constructor, getters, and other useful methods omitted for brevity
}
因此,您的findByItemId()
方法将创建一个空的循环列表,然后迭代结果集的行,为每一行构造一个Circulation
实例,并将该实例添加到列表中。然后它将返回该列表。
最后,您正在使用串联来构建带有参数的SQL查询。这很危险。您应该使用预先准备好的声明。阅读the tutorial关于他们的信息。
答案 1 :(得分:0)
看看Apache commons-dbutils。它是JDBC的简单包装器,允许您将结果集转换为任何标准数据结构
答案 2 :(得分:-1)
您可以使用功能
rs.getArray()
使用columnName或ColumnLabel。 但是这个函数返回对象数组,你可以将它转换为Integer和String。