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的结果
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)
进一步用作
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代表数据类型。