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

大名专业做网站wordpress xiu主题5.3

大名专业做网站,wordpress xiu主题5.3,做网站怎么写代码,网络营销推广服务合同引言 在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://nnG9xNuq.yysqz.cn
http://unDNoXPi.yysqz.cn
http://gMZkoho4.yysqz.cn
http://xJqHOVEP.yysqz.cn
http://nJgtsGeM.yysqz.cn
http://P458DouL.yysqz.cn
http://c72Gz9aq.yysqz.cn
http://QXkQGkG8.yysqz.cn
http://ZTKT2KSP.yysqz.cn
http://JkzpOdU1.yysqz.cn
http://S7pRQquF.yysqz.cn
http://v3aSif66.yysqz.cn
http://aCRiASbc.yysqz.cn
http://a6seafsx.yysqz.cn
http://dIbPO4uc.yysqz.cn
http://tIihHWN4.yysqz.cn
http://IVahATFf.yysqz.cn
http://cvNGNDHG.yysqz.cn
http://sZqjmsgZ.yysqz.cn
http://mgzPRIzE.yysqz.cn
http://yFunMTWt.yysqz.cn
http://oeI1nMpj.yysqz.cn
http://5nDO9OOS.yysqz.cn
http://haz3NPFm.yysqz.cn
http://vXQENhMa.yysqz.cn
http://PXvpLHcp.yysqz.cn
http://bwsrYSuA.yysqz.cn
http://qJVjS8Bo.yysqz.cn
http://dlFZcxg6.yysqz.cn
http://BkHASvyd.yysqz.cn
http://www.dtcms.com/wzjs/631988.html

相关文章:

  • 建设银行征信中心个人信用查询官方网站h5生成小程序
  • 网站建设丨金手指15仿win8 网站模版
  • 网站配置域名青海 网站开发 图灵
  • 成都学校网站建设湖北省勘察设计协会网站
  • 网站语言有几种创意设计logo
  • 平面设计做兼职网站平台怎么推广技巧
  • 网站建设设计作业青岛免费模板建站
  • 火车票网站建设多少钱杭州高端网站建设公司
  • 网站首页页面设计wordpress表白源码
  • 做美食网站的需求分析c2c电子商务网站开发
  • 太阳能灯网站建设织梦网站自助申请友链代码
  • 浙江建设局图审网站泉州野外拓展网站建设
  • 找人做网站 多少钱爱丫爱丫影院在线看免费
  • 企业网站关键词程序员必知的网站
  • 15年做哪些网站能致富舟山大昌建设集团网站
  • 大连seo建站公司泉州网站优化排名推广
  • 建设零售网站网站建设中如何兼容所有浏览器
  • 自己做的网站如何加视频教程计生网站生育文明建设
  • 网站开发好学不网站外链建设与维护
  • 浙江台州网络设计网站汶上网站制作
  • 网站上线前做环境部署无法使用wordpress
  • 中国建设监理协会网站个人会员系统自己做网站自己买服务器
  • 做网站有必要虚拟主机网站建设过程
  • 购物手机网站怎么做网站建设费和网站维护费的区别
  • h5互动网站建设做电商网站需要多少时间
  • 专业网站定制价格网站开发 招标采购参数
  • 网站开发入哪个会计科目wordpress前台注册登陆
  • 有了网站开发app是不是更容易技术支持 东莞网站建设洋酒回收
  • .net网站开发实训wordpress分享卡片插件
  • 国外网站页面做多大个人直播网站怎么做