JDBC获取数据库连接由浅入深
前言
Java Database Connectivity (JDBC)是Java语言中访问关系型数据库的标准统一接口,它是Java和数据库之间的一座桥梁,同时也是Java开发中不可或缺的重要组件之一。通过使用JDBC,我们可以在Java中连接和操作各种关系型数据库,如MySQL、Oracle、SQL Server等。在JDBC获取数据库连接过程中,我们可以分为以下几个层次:
- 使用纯JDBC技术连接数据库
- 使用JDBC连接池技术连接数据库
- 使用Spring框架中的JDBC技术连接数据库
接下来,我们将深入了解这三种获取数据库连接的方式,以及它们的优缺点。
使用纯JDBC技术连接数据库
使用纯JDBC技术进行数据库连接,通常需要经过以下步骤:
- 加载数据库驱动程序
- 建立数据库连接
- 创建Statement对象
- 执行SQL语句
- 处理结果集
- 关闭连接
以下是一个使用纯JDBC连接MySQL数据库的示例:
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 1. 加载MySQL数据库驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 2. 建立MySQL数据库连接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 3. 创建Statement对象
statement = connection.createStatement();
// 4. 执行SQL语句,获取结果集
resultSet = statement.executeQuery("SELECT * FROM user");
// 5. 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id=" + id + ", name=" + name);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 6. 关闭连接
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
使用JDBC连接池技术连接数据库
使用JDBC连接池技术连接数据库,相比于纯JDBC技术,具有更高的效率和更可靠的稳定性。连接池技术可以很好地解决数据库连接瓶颈问题,大大减少了连接数据库的时间。与之相应的,使用连接池连接数据库的步骤也有所变化:
- 加载数据库连接池驱动程序
- 配置数据库连接池参数
- 从连接池中获取数据库连接
- 执行SQL语句
- 处理结果集
- 关闭连接
以下是使用DBCP连接池技术连接MySQL数据库的示例:
import org.apache.commons.dbcp.BasicDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcPoolDemo {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 1. 加载DBCP数据库连接池驱动程序
Class.forName("org.apache.commons.dbcp.BasicDataSource");
// 2. 配置MySQL数据库连接池参数
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("password");
// 3. 从连接池中获取MySQL数据库连接
connection = dataSource.getConnection();
// 4. 创建Statement对象
statement = connection.createStatement();
// 5. 执行SQL语句,获取结果集
resultSet = statement.executeQuery("SELECT * FROM user");
// 6. 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id=" + id + ", name=" + name);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 7. 关闭连接
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
使用Spring框架中的JDBC技术连接数据库
Spring框架中的JDBC技术,可以很好地与JDBC驱动程序和连接池技术相结合,为应用程序提供了更便捷的方式来连接和操作数据库。使用Spring框架中的JDBC技术,我们可以通过配置文件的方式来配置数据库连接和数据源信息,从而实现连接和操作数据库的功能。
以下是一个使用Spring框架中JDBC技术连接MySQL数据库的示例:
- 配置数据库连接信息
在Spring的配置文件中,我们可以通过<bean>
元素来配置数据库连接信息,示例配置如下:
<!-- 配置MySQL数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
- 配置JdbcTemplate
在我们的Java代码中,我们需要使用Spring框架中的JdbcTemplate
类来进行数据库操作。在Spring的配置文件中,我们可以通过<bean>
元素来配置JdbcTemplate
,示例配置如下:
<!-- 配置JdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
- 数据库操作
在Java代码中,我们可以使用以下方式来进行数据库操作:
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcSpringDemo {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void selectUser() {
String sql = "SELECT * FROM user";
List<Map<String, Object>> userList = jdbcTemplate.queryForList(sql);
for (Map<String, Object> user : userList) {
int id = (int) user.get("id");
String name = (String) user.get("name");
System.out.println("id=" + id + ", name=" + name);
}
}
}
以上就是JDBC获取数据库连接由浅入深的完整攻略,希望对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDBC获取数据库连接由浅入深 - Python技术站