java如何调用数据库
使用JDBC连接数据库
JDBC(Java Database Connectivity)是Java连接数据库的标准API。通过JDBC可以执行SQL语句并处理结果。
加载数据库驱动,例如MySQL:
Class.forName("com.mysql.cj.jdbc.Driver");
建立数据库连接:
String url = "jdbc:mysql://localhost:3306/database_name";
String username = "root";
String password = "password";
Connection connection = DriverManager.getConnection(url, username, password);
执行SQL查询
创建Statement对象并执行查询:
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM table_name");
处理查询结果:
while (resultSet.next()) {
String column1 = resultSet.getString("column1");
int column2 = resultSet.getInt("column2");
// 处理数据
}
执行SQL更新
执行INSERT、UPDATE或DELETE语句:
int rowsAffected = statement.executeUpdate("UPDATE table_name SET column1 = 'value' WHERE id = 1");
使用PreparedStatement防止SQL注入
参数化查询更安全高效:
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
preparedStatement.setString(1, "value1");
preparedStatement.setInt(2, 123);
preparedStatement.executeUpdate();
关闭资源
使用完毕后必须关闭连接:
resultSet.close();
statement.close();
connection.close();
使用try-with-resources自动关闭
Java 7+推荐写法:
try (Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement stmt = conn.prepareStatement(sql)) {
// 数据库操作
} catch (SQLException e) {
e.printStackTrace();
}
使用连接池管理连接
常见连接池如HikariCP:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/database_name");
config.setUsername("root");
config.setPassword("password");
try (HikariDataSource dataSource = new HikariDataSource(config);
Connection connection = dataSource.getConnection()) {
// 数据库操作
}
使用ORM框架简化操作
常用框架如Hibernate或MyBatis:
// Hibernate示例
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User("name", "email@example.com");
session.save(user);
tx.commit();
session.close();
异常处理
必须处理SQLException:
try {
// 数据库操作
} catch (SQLException e) {
System.err.println("数据库错误: " + e.getMessage());
}






