java - SQL 到 Java 二维矩阵
问题描述
我不明白为什么它会关闭连接并且不将结果集中的信息提供给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);
在这里您使用的是 method ResultSet#getInt(int)
,没有将 achar
作为参数的方法,因此在您的情况下,对于第一次迭代,将char
转换为 an which is which is int
A
65
要么使用从 1 开始的索引来获取结果集的第一列,要么将列 char 转换为字符串以按名称获取列。
对结果集使用 while 循环可能会更好 - 考虑一下如果查询返回意外的行数会发生什么。你可以这样做:
while(rs.next())
{
// Do your row operations
}
这ResultSet#next()
将前进到下一行,并根据是否还有其他行返回真或假。
这也给您的代码带来了另一个问题 - 您的rs.next()
调用在您的内部循环中 - 这意味着您将为每次迭代推进一行和一列,然后可能会得到一个新的异常。
如果您使用,您还可以从异常中获得更好的详细信息
catch(Exception ex) {
ex.printStackTrace()
}
推荐阅读
- python-3.x - 对于给定的数据,我需要在 Key 列中找到“a”的计数
- python - 姜戈。在当前页面显示错误信息
- c++ - 执行存储的回调时发生 System.AccessViolationException 错误
- python - Python - Tensorflow 保存的模型精度低于保存之前
- c# - Specflow:将名称(从功能文件传递字符串)替换为步骤定义文件中的 AccessibilityId
- node.js - 如何使用node js在mongodb中动态创建集合
- python - 使用Curl时工作正常,但使用python请求时出现错误请求400
- excel - 引用单元格的着色(Excel、VBA)
- c - fgets 没有输入两个字符串
- vba - VBA Word - 使用弹出窗口填写多个表格