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
的属性。