选择适合你的软件工具在当今数字化时代,数据已经成为企业和个人决策的核心,无论是进行市场分析、客户关系管理还是日常业务操作,有效的数据管理都至关重要,而...
2025-11-22 254 数据库连接
Java数据库编程实例全解析——从入门到精通
在Java开发中,数据库编程是一个核心技能,它允许开发者与数据库进行交互,执行各种操作如查询、更新、删除和插入数据,本文将通过一系列实际的Java数据库编程实例,带领读者从基础到进阶,全面理解并掌握这一技能。
我们介绍Java数据库连接(JDBC)的基本用法,JDBC是Java提供的标准API,用于执行SQL语句和处理结果集,以下是一个简单的示例,展示了如何使用JDBC连接到MySQL数据库,并执行一个SELECT查询。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM mytable");
while (resultSet.next()) {
System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name"));
}
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用PreparedStatement防止SQL注入
为了防止SQL注入攻击,建议使用PreparedStatement代替Statement,下面是一个使用PreparedStatement的示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class PreparedStatementExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, user, password);
String query = "SELECT * FROM mytable WHERE name = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, "John Doe");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name"));
}
preparedStatement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用DAO模式简化数据库访问
为了提高代码的可维护性和可重用性,我们可以采用DAO(Data Access Object)模式,DAO模式将数据库访问逻辑封装在一个单独的类中,使得业务逻辑更加清晰。

// UserDao.java
public interface UserDao {
List<User> getAllUsers();
User getUserById(int id);
void saveUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
private Connection connection;
public UserDaoImpl(Connection connection) {
this.connection = connection;
}
@Override
public List<User> getAllUsers() {
List<User> users = new ArrayList<>();
String query = "SELECT * FROM users";
try (Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query)) {
while (resultSet.next()) {
users.add(new User(resultSet.getInt("id"), resultSet.getString("name"), resultSet.getString("email")));
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
@Override
public User getUserById(int id) {
User user = null;
String query = "SELECT * FROM users WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setInt(1, id);
try (ResultSet resultSet = preparedStatement.executeQuery()) {
if (resultSet.next()) {
user = new User(resultSet.getInt("id"), resultSet.getString("name"), resultSet.getString("email"));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
@Override
public void saveUser(User user) {
String query = "INSERT INTO users (name, email) VALUES (?, ?)";
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, user.getName());
preparedStatement.setString(2, user.getEmail());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void updateUser(User user) {
String query = "UPDATE users SET name = ?, email = ? WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, user.getName());
preparedStatement.setString(2, user.getEmail());
preparedStatement.setInt(3, user.getId());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void deleteUser(int id) {
String query = "DELETE FROM users WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setInt(1, id);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
使用ORM框架简化数据库操作
除了直接使用JDBC,还可以使用ORM(对象关系映射)框架来简化数据库操作,Hibernate和MyBatis是两种流行的Java ORM框架,这里以Hibernate为例,展示如何使用它来进行数据库操作。
需要在项目中添加Hibernate依赖:

<!-- pom.xml -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.21.Final</version>
</dependency>
创建一个实体类User和一个配置文件hibernate.cfg.xml:
// User.java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String email;
// getters and setters...
}
<!-- hibernate.cfg.xml -->
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping class="com.example.User"/>
</session-factory>
</hibernate-configuration>
使用Hibernate进行数据库操作:
// HibernateExample.java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.example.User;
public class HibernateExample {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
// Create a new user object and save it to the database
User user = new User();
user.setName("John Doe");
user.setEmail("john.doe@example.com");
session.save(user);
// Update an existing user object in the database
user = session.get(User.class, 1); // assuming the user with ID 1 exists
user.setEmail("john.newemail@example.com");
session.update(user);
// Delete a user object from the database
session.delete(user); // assuming we're deleting the same user we just updated/created above for simplicity's sake
transaction.commit();
sessionFactory.close();标签: 数据库连接
相关文章
选择适合你的软件工具在当今数字化时代,数据已经成为企业和个人决策的核心,无论是进行市场分析、客户关系管理还是日常业务操作,有效的数据管理都至关重要,而...
2025-11-22 254 数据库连接
VB.NET连接Access数据库的实用指南在软件开发过程中,数据库操作是一项基本且重要的任务,对于使用Visual Basic .NET(VB.NE...
2025-11-21 256 数据库连接
VB.NET连接数据库:实现高效数据交互的全面指南在当今信息化快速发展的时代,数据已成为企业决策的核心驱动力,作为微软.NET平台的重要组成部分,Vi...
2025-11-21 251 数据库连接
为什么Java程序需要连接数据库才能运行?在当今的软件开发领域,Java作为一种广泛使用的编程语言,其强大的功能和灵活性使其成为企业级应用开发的首选,...
2025-11-21 254 数据库连接 Java 在Java程序中 为什么需要连接到数据库才能运行?
Java连接数据库的重要性与实践在现代软件开发中,Java作为一种广泛使用的编程语言,其强大的功能和灵活性使其成为企业级应用的首选,尽管Java本身具...
2025-11-21 251 数据库连接
发表评论