如何将Java SQL查询转换为Java对象[]?
我正在寻找一种使用Java查询SQL数据库并返回对象[]的方法。以下是SQL查询:如何将Java SQL查询转换为Java对象[]?,java,sql,arrays,object,Java,Sql,Arrays,Object,我正在寻找一种使用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
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;
}
在函数中,首先使用
ArrayList
,而不是对象[]
。所以你不需要数行
那么每行
while(rs.next()) {
Object[] row = new Object[meta.getColumnCount()];
for (int i = 0 ; i < row.length ; ++i) {
row[i] = rs.getObject(i+1); // remember thet on ResultSet object first column is 1
}
rows.add(row); // add row to the ArrayList
}
while(rs.next()){
Object[]行=新对象[meta.getColumnCount()];
对于(int i=0;i
最后,您可以在函数中使用
toArray()
在数组中转换ArrayList
,首先使用ArrayList
而不是对象[][]
。所以你不需要数行
那么每行
while(rs.next()) {
Object[] row = new Object[meta.getColumnCount()];
for (int i = 0 ; i < row.length ; ++i) {
row[i] = rs.getObject(i+1); // remember thet on ResultSet object first column is 1
}
rows.add(row); // add row to the ArrayList
}
while(rs.next()){
Object[]行=新对象[meta.getColumnCount()];
对于(int i=0;i
最后,您可以使用
toArray()
在数组中转换ArrayList
?在循环获取数据之前,需要重置结果集
Object[][] result = new Object[rows];
rs.first();
int i = 0;
while (rs.next()) {
result[i] = new Object[3];
result[i][0] = rs.getObject(1);
result[i][1] = rs.getObject(2);
result[i][2] = rs.getObject(3);
i++;
}
这是你想要的吗?在循环获取数据之前,需要重置结果集
Object[][] result = new Object[rows];
rs.first();
int i = 0;
while (rs.next()) {
result[i] = new Object[3];
result[i][0] = rs.getObject(1);
result[i][1] = rs.getObject(2);
result[i][2] = rs.getObject(3);
i++;
}
以下是您启动的实现:
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;
}
public Object[][]句柄(ResultSet rs)引发SQLException{
如果(!rs.last()){//如果为false,则结果集为空。
System.out.println(“结果集为空”);
返回null;
}
int rowCount=rs.getRow();//您指向的是最后一行,因此这将获得最后一行的行号。
rs.beforeFirst();//重置光标。
ResultSetMetaData meta=rs.getMetaData();
int columnCount=meta.getColumnCount();
Object[][]结果=新对象[rowCount][columnCount];
int i=0;
while(rs.next()){
对于(int j=0;j
但就我个人而言,我更希望函数return
ArrayList
或者更好的List
,但是您需要手动实现并用行值填充TreeData
对象。这就是JPA/Hibernate的用武之地。。但是,根据您的应用程序,这可能又是一种过分的做法。以下是您启动的实现:
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;
}
public Object[][]句柄(ResultSet rs)引发SQLException{
如果(!rs.last()){//如果为false,则结果集为空。
System.out.println(“结果集为空”);
返回null;
}
int rowCount=rs.getRow();//您指向的是最后一行,因此这将获得最后一行的行号。
rs.beforeFirst();//重置光标。
ResultSetMetaData meta=rs.getMetaData();
int columnCount=meta.getColumnCount();
Object[][]结果=新对象[rowCount][columnCount];
int i=0;
while(rs.next()){
对于(int j=0;j
但就我个人而言,我更希望函数return
ArrayList
或者更好的List
,但是您需要手动实现并用行值填充TreeData
对象。这就是JPA/Hibernate的用武之地。。但是,根据您的应用程序,这可能又是一种过分的做法。他的查询使用select*
,因此您无法确保列始终是3。同意,for循环是一种更可靠的解决方案。他的查询使用select*
,因此您无法确保列始终是3。同意,for循环是一个更健壮的解决方案。