上述代码我不确定我的列名称,怎样可以通过JdbcTemplete遍历表的列来输出每行数据?
时间: 2024-04-14 13:25:43 浏览: 8
如果你不确定表的列名称,可以使用JdbcTemplate的`queryForList`方法获取查询结果,并通过遍历结果集的方式输出每行数据。以下是修改后的示例程序:
```java
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import java.util.List;
import java.util.Map;
public class ExecuteSQL {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/database_name"; // 替换为你的数据库连接URL
String username = "your_username"; // 替换为你的数据库用户名
String password = "your_password"; // 替换为你的数据库密码
String sql = readUserInput(); // 从用户输入中获取SQL语句
// 创建数据源
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
// 创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 执行SQL语句并获取执行结果
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
// 输出结果
for (Map<String, Object> row : result) {
for (Map.Entry<String, Object> entry : row.entrySet()) {
String columnName = entry.getKey();
Object columnValue = entry.getValue();
System.out.print(columnName + ": " + columnValue + "\t");
}
System.out.println();
}
}
private static String readUserInput() {
// 读取用户输入的SQL语句,可以使用Scanner等方式进行获取
return "SELECT * FROM table_name"; // 示例中使用静态SQL语句,你可以根据实际需求修改
}
}
```
在上述示例中,我们使用`queryForList`方法来执行SQL语句并获取结果集。结果集是一个List<Map<String, Object>>,其中每个Map代表一行数据,键为列名,值为对应的数据。通过遍历结果集的方式,我们可以输出每行数据的列名和对应的值。
请确保替换URL、用户名和密码,并在`readUserInput`方法中根据实际需求获取用户输入的SQL语句。
希望以上代码能够满足你的需求!如果你有任何其他问题,请随时提问。