gpt4 book ai didi

java - 创建一个像矩阵一样的二维数组

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

我对java不太熟悉,而且我有一个项目的期限很短。让我们进入正题吧。我有以下类(class):

public static void getAllDataDB1() // Catching all the data from "bank1" database
{
try
{
MetaData1 = connection1.getMetaData();
catalogs1 = MetaData1.getCatalogs();
String[] types = {"TABLE"};
resTables1 = MetaData1.getTables(null,null,"%",types);

while (resTables1.next())
{
db1TableName = resTables1.getString("TABLE_NAME");
System.out.println("|=====================================================|");
System.out.println("| CATCHING " +dbName1+"."+db1TableName+ " DATA |");
System.out.println("|=====================================================|");
System.out.println("|=====================================================|");
System.out.println("| THE QUERY IS IN PROGRESS. PLEASE WAIT... |");
System.out.println("|=====================================================|");
resTablesStr1 = statement1.executeQuery("SELECT * FROM "+db1TableName+";");
resColumns1 = resTablesStr1.getMetaData();
db1ColNum = resColumns1.getColumnCount();
db1FirstColName = resColumns1.getColumnName(1);

for (int i=1; i<=db1ColNum; i++)
{
db1FirstColName = resColumns1.getColumnName(1);
db1ColName = resColumns1.getColumnName(i);
System.out.println("| COLUMN: " +db1ColName+ " |");
System.out.println("\n");
resTablesData1 = statement1.executeQuery("SELECT "+db1ColName+" FROM "+db1TableName+" GROUP BY "+db1FirstColName+";");

while (resTablesData1.next())
{
db1RowNum++;
}

columnsArrayDB1 = new String[db1RowNum][db1ColNum];
resTablesData1 = statement1.executeQuery("SELECT "+db1ColName+" FROM "+db1TableName+" GROUP BY "+db1FirstColName+";");

resTablesData1.next();
String rowData = resTablesData1.getString(db1ColName);
for (int j=0; j<db1RowNum; j++)
{
System.out.println();

for (int k=0; k<db1ColNum; k++)
{
columnsArrayDB1[j][k] = rowData;
System.out.println("|-----------------------------------------------------|");
System.out.print("| "+columnsArrayDB1[j][k]+" |"+"\t");
System.out.println("|-----------------------------------------------------|");

//columnsArrayDB1[j][x+1]=columnsArrayDB1[j][x];
}


}

/*while (resTablesData1.next())
{
String rowData = resTablesData1.getString(db1ColName);
for (int j=0; j<db1RowNum; j++)
{
System.out.println(rowData);
//columnsArrayDB1[j] = rowData;
//System.out.print(columnsArrayDB1[j]+" ");

}
System.out.println(rowData);
}*/
}
}
}
catch (SQLException e)
{
System.err.println("Connection Failed! Check output console " + e.getMessage());
System.exit(0);
}
}

我正在尝试从特定数据库捕获所有数据并将它们作为矩阵样式存储到数组中。编译并运行上面的代码时收到的结果是这样的:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

| COLUMN: Gender |

female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female
female female female female female female female female female female female female female female female female female female female female female female

正如你意识到我想要这样的结果:

1 female Mrs. 
2 male Mr.
etc... etc...

请告诉我该怎么办,因为我被困在这里看电脑......乔治。

最佳答案

正如所提到的,您的错误是您从未从数据库中重新读取rowData,并且数组中的每个索引都设置为仅从一列读取的相同值,通过此处的代码:

resTablesData1.next();
String rowData = resTablesData1.getString(db1ColName);
for (int j=0; j<db1RowNum; j++)
{
System.out.println();
for (int k=0; k<db1ColNum; k++)
{
columnsArrayDB1[j][k] = rowData;
System.out.println("|-----------------------------------------------------|");
System.out.print("| "+columnsArrayDB1[j][k]+" |"+"\t");
System.out.println("|-----------------------------------------------------|");
}
}

您需要循环 resTablesData1 中的每一行,然后从每一列获取数据(假设 resTablesData1 是一个 ResultSet)

int j = 0;
while(resTablesData1.next())
{
ResultSetMetaData rsmd = resTablesData1.getMetaData();
int colCount = rsmd.getColumnCount();
System.out.println();
for (int k=0; k<colCount ; k++)
{
String colName = rsmd.getColumnName(i);
Object o = resTablesData1.getObject(colName);
columnsArrayDB1[j][k] = o.toString();
System.out.println("|-----------------------------------------------------|");
System.out.print("| "+columnsArrayDB1[j][k]+" |"+"\t");
System.out.println("|-----------------------------------------------------|");
}
j++;
}

但是,您最好创建一个代表行数据的对象。然后,对于收到的每一行,您可以创建该对象的一个​​新实例,然后将其添加到这些对象的列表中。那么你也只需要查询一次数据库即可。

例如这样的事情:

public class RowDataObject
{
public String col1;
public String col2;
// Etc
public RowDataObject(String aCol1, String aCol2 /*.....etc */ )
{
col1 = aCol1;
col2 = aCol2; //...etc
}
}

然后读取数据

List<RowDataObject> allRows = new ArrayList<RowDataObject>();

ResultSet rs = //Your Query
while (rs.next())
{
String c1 = rs.getString("A Column Name or Index");
String c2 = rs.getString("A Column second Name or Index");
//...etc
allRows.add(new RowDataObject(c1,c2......));
}

然后从列表中执行打印操作

关于java - 创建一个像矩阵一样的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259858/

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