所以这是我的联系。它成功地运作了。
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection c = DriverManager.getConnection("jdbc:mysql://localhost/Gear?user=root&password=admin");
Statement st = c.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Weapons");
ResultSetMetaData md = rs.getMetaData();
这是我检索数据的代码。
String[] columns = new String[] { "Id", "Name", "Style", "DPS"};
int rowcount = 0;
if (rs.last()) //finds out how many rows there are
{
rowcount = rs.getRow();
rs.beforeFirst();
}
String[][] data = new String[rowcount][columns.length]; //data storage array
while(rs.next())
{
for( int i = 0; i < rowcount; i++)
{
for( int j = 1; j <= md.getColumnCount();j++)
{
System.out.println(data[i][j] = rs.getString(j)); //add the record
}
}
}
这是我的表数据:
ID,武器名称,风格,DPS
1,Noxious Staff,Magic,1000
2,Ascension Crossbow,远程,1200
3,Tetsu Katana,Melee,950
我收到的错误是ArrayIndexOutOfBoundsException
超出范围。如何解决此错误?
答案 0 :(得分:0)
问题可能在于您获取列值的方式。当您要求时,您需要提供列的名称,而不是索引数值。
像这样:rs.getString("Id")
只需多次执行此操作即可获取行中的每个列值。希望这有帮助!
答案 1 :(得分:0)
您应该使用以下代码
for( int j = 0; j < columns.length;j++)
{
System.out.println(data[i][j] = rs.getString(j + 1)); //add the record
}
在查看代码时,我没有明白使用元数据。您根本不需要使用它。