当前位置: 首页> 新闻> 会展 > 站台建筑_微信公众号运营需要做什么_快速网站排名提升_开封网络推广公司

站台建筑_微信公众号运营需要做什么_快速网站排名提升_开封网络推广公司

时间:2025/8/22 15:40:59来源:https://blog.csdn.net/weixin_73042028/article/details/146079539 浏览次数:0次
站台建筑_微信公众号运营需要做什么_快速网站排名提升_开封网络推广公司

引言

在Java开发中,数据库操作是非常常见的需求。为了简化数据库操作,Java提供了JDBC(Java Database Connectivity)API,它允许Java程序员通过统一的接口访问不同的数据库。本文将详细介绍JDBC的基本原理、使用方法、以及如何通过数据库连接池优化数据库连接。

JDBC概述

JDBC的基本原理

JDBC为Java程序员提供了一套用于数据库操作的接口API。通过JDBC,Java程序员可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。JDBC的核心思想是“面向接口编程”,即Java程序员只需要面向JDBC API编程,而不需要关心底层数据库的具体实现。

JDBC带来的好处

  1. 统一的接口:JDBC为不同的数据库提供了统一的接口,屏蔽了底层数据库的差异。
  2. 灵活性:Java程序员可以通过JDBC连接任何支持JDBC的数据库系统。
  3. 简化开发:JDBC API简化了数据库操作的复杂性,开发者只需关注业务逻辑。

JDBC程序编写步骤

  1. 注册驱动:加载数据库驱动程序。
  2. 获取连接:通过DriverManager获取数据库连接。
  3. 执行SQL:通过StatementPreparedStatement执行SQL语句。
  4. 释放资源:关闭连接,释放资源。

JDBC第一个程序

以下是一个简单的JDBC程序示例,展示了如何通过JDBC对数据库表进行增删改查操作。

package JDBC_;import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;public class JDBC01_ {public static void main(String[] args) throws SQLException {// 1、注册驱动Driver driver = new com.mysql.cj.jdbc.Driver();// 2、得到连接String url = "jdbc:mysql://127.0.0.1:3306/mysql_learn?characterEncoding=utf-8&serverTimezone=UTC";Properties properties = new Properties();properties.setProperty("user", "root");properties.setProperty("password", "123456");Connection connect = driver.connect(url, properties);// 3、执行SQLString sql = "INSERT INTO actor values(2,'MM','女','2022-05-10 14:50:59','15371009565')";Statement statement = connect.createStatement();int rows = statement.executeUpdate(sql);System.out.println("新增了:" + rows + " 条数据");// 4、释放资源statement.close();connect.close();}
}

获取数据库连接的5种方式

方式一:直接使用DriverManager

Driver driver = new com.mysql.cj.jdbc.Driver();
String url = "jdbc:mysql://127.0.0.1:3306/mysql_learn?characterEncoding=utf-8&serverTimezone=UTC";
Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "123456");Connection connect = driver.connect(url, properties);

方式二:通过反射加载驱动

Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();String url = "jdbc:mysql://127.0.0.1:3306/mysql_learn?characterEncoding=utf-8&serverTimezone=UTC";
Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "123456");Connection connect = driver.connect(url, properties);

方式三:使用DriverManager注册驱动

Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();String url = "jdbc:mysql://127.0.0.1:3306/mysql_learn?characterEncoding=utf-8&serverTimezone=UTC";
String user = "root";
String password = "123456";DriverManager.registerDriver(driver);
Connection connection = DriverManager.getConnection(url, user, password);

方式四:简化版

Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/mysql_learn?characterEncoding=utf-8&serverTimezone=UTC";
String user = "root";
String password = "123456";Connection connection = DriverManager.getConnection(url, user, password);

方式五:通过配置文件获取连接

Properties properties = new Properties();
properties.load(new FileInputStream("src/application.properties"));String user = properties.getProperty("user");
String password = properties.getProperty("password");
String url = properties.getProperty("url");
String driver = properties.getProperty("driver");Class.forName(driver);
Connection connection = DriverManager.getConnection(url, user, password);

PreparedStatement与SQL注入

SQL注入问题

SQL注入是一种常见的安全漏洞,攻击者可以通过在输入中插入恶意SQL语句来操纵数据库查询。例如:

SELECT * FROM actor WHERE id = '1' OR '1'='1';

使用PreparedStatement防止SQL注入

PreparedStatement通过预编译SQL语句并使用参数化查询,可以有效防止SQL注入。

String sql = "SELECT * FROM actor WHERE id = ? AND name = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, "1");
statement.setString(2, "MM");
ResultSet resultSet = statement.executeQuery();

数据库连接池

传统连接的问题

  1. 频繁连接:每次操作都需要建立和关闭连接,消耗大量资源。
  2. 资源泄漏:如果连接未正确关闭,可能导致内存泄漏。
  3. 性能瓶颈:连接数过多时,数据库可能崩溃。

数据库连接池的优势

  1. 连接复用:预先创建一定数量的连接,使用时从池中获取,使用完毕后放回池中。
  2. 资源管理:连接池负责分配、管理和释放连接,避免资源泄漏。
  3. 性能提升:减少频繁创建和关闭连接的开销,提升系统性能。

常见的数据库连接池

  1. C3P0:稳定性较好,但速度较慢。
  2. DBCP:速度较快,但稳定性较差。
  3. Druid:阿里开源的连接池,集成了多种连接池的优点。

Druid连接池示例

@Test
public void druidTest001() throws Exception {Properties properties = new Properties();properties.load(new FileInputStream("src/druid.properties"));DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);Connection connection = dataSource.getConnection();System.out.println("连接成功!");connection.close();
}

事务管理

事务的基本概念

事务是数据库操作的最小单位,具有ACID特性(原子性、一致性、隔离性、持久性)。在JDBC中,默认情况下每个SQL语句都是一个独立的事务,自动提交。

使用事务保证数据一致性

connection.setAutoCommit(false); // 关闭自动提交
try {// 执行SQLconnection.commit(); // 提交事务
} catch (SQLException e) {connection.rollback(); // 回滚事务
} finally {connection.setAutoCommit(true); // 恢复自动提交
}

批处理

批处理的优势

批处理允许一次性提交多条SQL语句,减少与数据库的交互次数,提升性能。

批处理示例

connection.setAutoCommit(false);
PreparedStatement statement = connection.prepareStatement("INSERT INTO actor VALUES (?, ?, ?, ?, ?)");for (int i = 0; i < 10000; i++) {statement.setInt(1, i);statement.setString(2, "Name" + i);statement.setString(3, "男");statement.setString(4, "2022-05-10 14:50:59");statement.setString(5, "1234567890");statement.addBatch();
}statement.executeBatch();
connection.commit();

总结

JDBC是Java操作数据库的核心技术,通过JDBC API,Java程序员可以轻松连接和操作各种数据库。为了提高数据库操作的效率和安全性,我们可以使用PreparedStatement防止SQL注入,使用数据库连接池管理连接,以及通过事务和批处理优化数据库操作。

关键字:站台建筑_微信公众号运营需要做什么_快速网站排名提升_开封网络推广公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: