java如何读取数据库
读取数据库的步骤
1. 加载数据库驱动
使用Class.forName()方法加载数据库驱动。不同数据库的驱动类名不同,例如MySQL的驱动类名为com.mysql.jdbc.Driver。
Class.forName("com.mysql.jdbc.Driver");
2. 建立数据库连接
通过DriverManager.getConnection()方法建立与数据库的连接。需要提供数据库URL、用户名和密码。
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
Connection connection = DriverManager.getConnection(url, username, password);
3. 创建Statement对象
使用Connection对象的createStatement()方法创建Statement对象,用于执行SQL查询。
Statement statement = connection.createStatement();
4. 执行SQL查询

通过Statement对象的executeQuery()方法执行SQL查询,返回一个ResultSet对象。
String sql = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(sql);
5. 处理查询结果
遍历ResultSet对象,获取查询结果。使用next()方法移动到下一行,通过列名或索引获取列值。
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
6. 关闭资源

关闭ResultSet、Statement和Connection对象,释放数据库资源。
resultSet.close();
statement.close();
connection.close();
使用PreparedStatement防止SQL注入
PreparedStatement可以预编译SQL语句,防止SQL注入攻击。
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 1);
ResultSet resultSet = preparedStatement.executeQuery();
使用try-with-resources自动关闭资源
Java 7及以上版本可以使用try-with-resources语句自动关闭资源,避免手动关闭的繁琐和遗漏。
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
使用数据库连接池
对于频繁的数据库操作,建议使用数据库连接池(如HikariCP、DBCP)管理连接,提高性能。
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
config.setUsername("root");
config.setPassword("password");
HikariDataSource dataSource = new HikariDataSource(config);
try (Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
// 处理结果
} catch (SQLException e) {
e.printStackTrace();
}
处理异常
数据库操作可能抛出SQLException,需要进行捕获和处理。
try {
// 数据库操作
} catch (SQLException e) {
e.printStackTrace();
}
完整示例代码
import java.sql.*;
public class DatabaseReader {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String sql = "SELECT * FROM users";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
while (resultSet.next()) {
System.out.println("ID: " + resultSet.getInt("id") +
", Name: " + resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}






