当前位置: 首页 > wzjs >正文

北京网站制作如何建立电商平台

北京网站制作,如何建立电商平台,做网站和做网页,做网站主题引言 在Java开发中,数据库操作是非常常见的需求。为了简化数据库操作,Java提供了JDBC(Java Database Connectivity)API,它允许Java程序员通过统一的接口访问不同的数据库。本文将详细介绍JDBC的基本原理、使用方法、以…

引言

在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注入,使用数据库连接池管理连接,以及通过事务和批处理优化数据库操作。

http://www.dtcms.com/wzjs/99155.html

相关文章:

  • 做零食网站的原因如何建网站不花钱
  • bootstrap做的导视网站seo网站推广优化论文
  • 上海 网站备案代理seo网站有哪些
  • 企业网站建设要素国内最新新闻事件今天
  • 黑龙江龙采做网站如何网站优化推广费用
  • 腾讯风铃怎么做网站互联网营销工具有哪些
  • 专业构建网站的公司游戏合作渠道
  • 百度网站建设前期都有哪些费用wordpress建站公司
  • 国内网站在国外访问很慢个人免费建站软件
  • 网站后台模板安装显示不了百度如何免费推广
  • 蔬菜水果网站建设小说网站排名免费
  • 小型网站建设成人培训班有哪些课程
  • 学校为什么要建设网站百度页面推广
  • 网站备案哪个部门武汉整站seo数据上云
  • 浙江微信网站建设报价谷歌流量代理代理
  • 做外贸都用什么网站嘉峪关seo
  • 新手做视频网站如何推广一个项目
  • 最好的wordpress 网站今日热点新闻头条
  • 黄江网站设计广东seo快速排名
  • 茌平网站建设电话app推广项目
  • 网站建设实验总结百科网站域名查询ip
  • 想建一个网站怎么做网站的seo是什么意思
  • 织梦做的网站如何去掉index微信营销方案
  • 模板网站 没有独立的ftp新媒体运营培训班
  • 网站建设策划书ol怎么让付费网站免费
  • 如何查看一个网站是不是用h5做的windows10优化工具
  • wordpress自带图片大小seo顾问张智伟
  • 电商网站需求分析廊坊自动seo
  • 西安保安公司seo培训赚钱
  • 深圳建网站seoseo优化步骤