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

Java 如何从SQL数据库检索数据?,java,sql,sql-server,resultset,indexoutofboundsexception,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.exe

这是我的连接。它成功地工作了

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
        }
    }
}
String[]columns=新字符串[]{“Id”、“Name”、“Style”、“DPS”};
int rowcount=0;
if(rs.last())//找出有多少行
{
rowcount=rs.getRow();
rs.beforeFirst();
}
字符串[][]数据=新字符串[rowcount][columns.length]//数据存储阵列
while(rs.next())
{
对于(int i=0;i对于(int j=1;j而言,问题可能在于获取列值的方式。当您要求获取列值时,需要提供列的名称,而不是索引数值

如下所示:
rs.getString(“Id”)


只需多次执行此操作即可获得行中的每个列值。希望这有帮助!

您应该使用以下代码

for( int j = 0; j < columns.length;j++)
    {
        System.out.println(data[i][j] = rs.getString(j + 1)); //add the record
    }
for(int j=0;j

查看您的代码时,我不明白使用元数据的意义。您根本不需要使用它。

尝试用0启动j,让它运行到jjava.sql.SQLException:Column Index超出范围,0<1。
表中的所有列都是字符串类型吗?或者iD是
integer
?当我为(int j=1;j时,它仍然说它超出范围@puretppc获取行值时,应该询问该列的名称,而不是数字。如
rs.getString(“列名”)
我更改了答案,您需要的是列名,而不是数字标识符。如果您要查找不同的值,请调整要获取的
rs
的属性。