选择适合你的软件工具在当今数字化时代,数据已经成为企业和个人决策的核心,无论是进行市场分析、客户关系管理还是日常业务操作,有效的数据管理都至关重要,而...
2025-11-22 254 数据库连接
Java如何从数据库取数据:详细指南与最佳实践
在Java编程中,从数据库取数据是一项常见任务,无论是开发Web应用、桌面应用还是移动应用,我们都需要从数据库中获取和存储数据,本文将详细介绍如何在Java中从数据库取数据,并提供一些最佳实践建议。
使用JDBC连接数据库 我们需要使用JDBC(Java Database Connectivity)来连接数据库,JDBC是Java提供的一种用于执行SQL语句的API,以下是一个简单的示例代码,展示了如何使用JDBC连接到MySQL数据库并执行查询。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DatabaseExample {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 注册JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 打开连接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 执行查询
statement = connection.createStatement();
String sql = "SELECT id, name FROM users";
resultSet = statement.executeQuery(sql);
// 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭资源
try { if (resultSet != null) resultSet.close(); } catch (Exception e) {}
try { if (statement != null) statement.close(); } catch (Exception e) {}
try { if (connection != null) connection.close(); } catch (Exception e) {}
}
}
}
使用PreparedStatement防止SQL注入
为了防止SQL注入攻击,建议使用PreparedStatement而不是Statement,PreparedStatement允许我们预编译SQL语句,并将参数绑定到这些语句上,以下是一个使用PreparedStatement的示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DatabaseExample {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 注册JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 打开连接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 创建PreparedStatement
String sql = "SELECT id, name FROM users WHERE name = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "John Doe");
// 执行查询
resultSet = preparedStatement.executeQuery();
// 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭资源
try { if (resultSet != null) resultSet.close(); } catch (Exception e) {}
try { if (preparedStatement != null) preparedStatement.close(); } catch (Exception e) {}
try { if (connection != null) connection.close(); } catch (Exception e) {}
}
}
}
使用连接池提高性能
当应用程序需要频繁地与数据库交互时,每次都建立一个新的数据库连接可能会影响性能,这时可以使用连接池来管理数据库连接,从而提高性能,常用的连接池有HikariCP、C3P0等,以下是一个使用HikariCP连接池的示例代码:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DatabaseExample {
public static void main(String[] args) {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/test");
config.setUsername("root");
config.setPassword("password");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
HikariDataSource dataSource = new HikariDataSource(config);
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = dataSource.getConnection();
String sql = "SELECT id, name FROM users WHERE name = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "John Doe");
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try { if (resultSet != null) resultSet.close(); } catch (Exception e) {}
try { if (preparedStatement != null) preparedStatement.close(); } catch (Exception e) {}
try { if (connection != null) connection.close(); } catch (Exception e) {}
dataSource.close();
}
}
}
通过以上方法,你可以在Java中高效地从数据库取数据,记得遵循最佳实践,如使用PreparedStatement防止SQL注入、使用连接池提高性能等。
标签: 数据库连接
相关文章
选择适合你的软件工具在当今数字化时代,数据已经成为企业和个人决策的核心,无论是进行市场分析、客户关系管理还是日常业务操作,有效的数据管理都至关重要,而...
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 数据库连接
发表评论