Java.在ResultSet中打印数据

use*_*jhg 28 java mysql scala jdbc

我正在通过Java从SQL数据库中检索列名.我知道我也可以检索列名ResultSet.所以我有这个SQL查询

 select column_name from information_schema.columns where table_name='suppliers'
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何获取列名ResultSet和我的代码

public void getAllColumnNames() throws Exception{

String sql = "SELECT column_name from information_schema.columns where table_name='suppliers'";

PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery(sql);
 // extract values from rs


}
Run Code Online (Sandbox Code Playgroud)

Zeb*_*Zeb 67

ResultSet resultSet = statement.executeQuery("SELECT * from foo");
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (resultSet.next()) {
    for (int i = 1; i <= columnsNumber; i++) {
        if (i > 1) System.out.print(",  ");
        String columnValue = resultSet.getString(i);
        System.out.print(columnValue + " " + rsmd.getColumnName(i));
    }
    System.out.println("");
}
Run Code Online (Sandbox Code Playgroud)

参考: 打印ResultSet的结果


Jav*_*ast 9

1)而不是PreparedStatement使用Statement

2)执行查询后ResultSet,在rs.getString()as 的帮助下提取值:

Statement st=cn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
    rs.getString(1); //or rs.getString("column name");
}
Run Code Online (Sandbox Code Playgroud)


swa*_*dhi 5

进一步用作

rs.getString(1);
rs.getInt(2);
Run Code Online (Sandbox Code Playgroud)

1, 2是表的列数,根据列的数据类型设置int或string


小智 1

查看文档。你犯了以下错误。首先,ps.executeQuery()没有任何参数。相反,您将 SQL 查询传递给它。

?其次,对于准备好的语句,如果要传递任何参数,则必须使用符号。然后使用绑定它

setXXX(index, value) 
Run Code Online (Sandbox Code Playgroud)

这里xxx代表数据类型。