gpt4 book ai didi

java - 如何将 Java SQL 查询转换为 Java 对象 [][]?

转载 作者:行者123 更新时间:2023-11-29 03:47:56 25 4
gpt4 key购买 nike

我正在寻找一种使用 Java 查询 SQL 数据库并返回对象 [][] 的方法。这是 SQL 查询:

 private static Object result[][] = null;
result = run.query(conn, "select * from TREEDATA", rsh);

以下是数据应该镜像的示例:

    Object[][] table = {
{1, null, "Root"}, //i=0
{2, 1, "Node2"}, //i=1
{3, 2, "Node3"}, //i=2
{4, 3, "Node4"}, //i=3
{5, 4, "Node5"}, //i=4
{6, 5, "Node6"}, //i=5
{7, 6, "Node7"}, //i=6
{8, 1, "Node8"}, //i=7
{9, 1, "Node9"}, //i=8
{10, 9, "Node10"},}; //i=9

这是带有我无法理解的代码的结果集处理程序:

    public Object[][] handle(ResultSet rs) throws SQLException {
if (!rs.next()) {
System.out.println("result set is null");
return null;
}
ResultSetMetaData meta = rs.getMetaData();
int rows = 0;
while (rs.next()) {
rows++;
}
Object[][] result = new Object[rows];
int i = 0;
while (rs.next()) {
//How do I do what I need to do in order to return result[][]
result[i][] = rs.getObject(3);
System.out.println(result[i][2].toString());
}
return result;
}

最佳答案

这是您启动时的实现:

    public Object[][] handle(ResultSet rs) throws SQLException {
if (!rs.last()) { //If false, the result set is empty.
System.out.println("result set is null");
return null;
}
int rowCount = rs.getRow(); // You are pointing on the last row, so this will get the row number of the last row.
rs.beforeFirst(); // Reset your cursor.
ResultSetMetaData meta = rs.getMetaData();
int columnCount = meta.getColumnCount();
Object[][] result = new Object[rowCount][columnCount];
int i = 0;
while (rs.next()) {
for (int j = 0; j < columnCount; j++) {
result[i][j] = rs.getObject(j);
}
}
return result;
}

但我个人更希望函数返回 ArrayList<Object[]>甚至更好List<TreeData>但随后您需要实现并填写 TreeData手动具有行值的对象。这就是 JPA/Hibernate 的用武之地。但根据您的应用程序,这可能又是矫枉过正。

关于java - 如何将 Java SQL 查询转换为 Java 对象 [][]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061611/

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