gpt4 book ai didi

java - SQL 到 java 二维矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:43 25 4
gpt4 key购买 nike

我不明白为什么它关闭连接并且不向我提供结果集中的信息到 int[][] 有人可以帮助我,我陷入困境,谢谢

public void InsertBoredFromSQL()
{
Connection conn = null;
Statement st = null;
ResultSet rs1 = null;
int[][] Arr = new int[8][8];
String Query = "select A,B,C,D,E,F,G,H from Games where GameID =" + this.res;
//this is a variable to help from the outside (globale)

try
{
//crate connection
conn = getConnection();
//crate statement and execute query
st = conn.createStatement();
rs1 = st.executeQuery(Query);
//from here it jumps to the exeption and i don't know why it wont run
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
rs1.next();
char c = 'A';
char column = (char) (i + c);
Arr[i][j] = rs1.getInt(column);
}
}
}
catch (Exception ex)
{
System.out.println(ex);
}
}

最佳答案

您的部分问题是这样的:

 char c = 'A';
char column = (char) (i + c);
Arr[i][j] = rs1.getInt(column);

这里您使用的是方法 ResultSet#getInt(int) ,没有任何方法将 char 作为参数,因此 char 会转换为 int,在您的情况下,第一次迭代是 A,即 65

要么使用从 1 开始的索引来获取结果集的第一列,要么将列字符转换为字符串以按名称获取列。

您可能还最好对结果集使用 while 循环 - 考虑如果您的查询返回意外数量的行会发生什么。你可以这样做:

while(rs.next())
{
// Do your row operations
}

这相当于 ResultSet#next()将前进到下一行,并根据是否还有更多行返回 true 或 false。

这还带来了代码的另一个问题 - 您的 rs.next() 调用位于内部循环内 - 这意味着您将为每次迭代前进一行和一列,然后可能会遇到新的异常。

如果您使用,您还可以从异常中获得更好的详细信息

catch(Exception ex) {
ex.printStackTrace()
}

关于java - SQL 到 java 二维矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50456566/

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