统计一个表里的城市和租房数量 两个字段值存入到另一个表里用java语言全部代码
时间: 2024-10-21 10:03:56 浏览: 33
在Java中,为了统计一个表里的城市和租房数量并将结果插入到另一个表,我们通常会使用JDBC(Java Database Connectivity)连接数据库,然后编写SQL查询来获取数据并更新目标表。假设我们有两个表,一个是`rental_table`,包含`city`和`quantity`字段,另一个是`stats_table`需要存储统计数据。
首先,确保已导入所需的JDBC依赖,如`java.sql.Connection`, `java.sql.Statement`, 和 `java.sql.DriverManager`。
```java
import java.sql.*;
public class RentalStatistics {
private static final String DB_URL = "jdbc:mysql://localhost:3306/your_database";
private static final String USER = "your_username";
private static final String PASSWORD = "your_password";
public static void main(String[] args) {
try {
// 连接到数据库
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 创建一个Statement对象或者PreparedStatement,用于执行SQL
Statement stmt = conn.createStatement();
// 或者,如果你的数据安全性要求更高,可以使用PreparedStatement
// PreparedStatement pstmt = conn.prepareStatement(
// "INSERT INTO stats_table (city, quantity) VALUES (?, ?)");
// 查询 rental_table 中的城市和对应的租房数量
String sqlQuery = "SELECT city, SUM(quantity) as total_quantity FROM rental_table GROUP BY city";
ResultSet rs = stmt.executeQuery(sqlQuery);
// 遍历结果集,并将数据插入 stats_table
while (rs.next()) {
String city = rs.getString("city");
int totalQuantity = rs.getInt("total_quantity");
// 将数据插入到PreparedStatement中,避免SQL注入风险
// pstmt.setString(1, city);
// pstmt.setInt(2, totalQuantity);
// pstmt.executeUpdate();
// 如果使用Statement,直接执行SQL
String insertSql = "INSERT INTO stats_table (city, quantity) VALUES ('" + city + "', " + totalQuantity + ")";
stmt.executeUpdate(insertSql);
}
// 关闭资源
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
注意:上述代码是一个基本示例,实际应用中你需要处理异常,以及确保对敏感信息(如数据库URL、用户名和密码)的安全管理。同时,对于大数据量的处理,考虑使用批处理(Batch Processing)提高效率。
阅读全文