如何从SQL数据库中检索数据?

时间:2015-12-11 17:14:31

标签: java sql sql-server resultset indexoutofboundsexception

所以这是我的联系。它成功地运作了。

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超出范围。如何解决此错误?

2 个答案:

答案 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
    }

在查看代码时,我没有明白使用元数据。您根本不需要使用它。