本篇博文是对Java Web及其与数据库交互的深入浅出的介绍,旨在为读者提供一站式指南。内容涵盖了Java Web的基础概念,包括数据库相关的基础知识、MySQL数据库的操作和管理,以及JDBC(Java数据库连接)的详细解析。博主通过示例和详尽的图片说明,逐步讲解了JDBC的快速入门方法,驱动管理、数据库连接对象、语句对象的使用,以及如何安全有效地使用预编译语句来防止SQL注入攻击。此外,文章还详细讨论了数据库连接池的概念,以及通过重用连接来提升性能和安全性的重要性。从基本概念到高级技巧,愿本文为Java后端开发和数据库管理的读者提供帮助。
一、JavaWeb介绍
二、数据库相关概念
三、MySQL数据库
MySQL相关的知识点可以看博主专栏:MySQL数据库:https://blog.csdn.net/du_xiaonan/
四、JDBC简介
1,概念:
Java数据库连接,用Java语言操作数据库,本质是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口(JDBC)变成,真正执行的代码是驱动jar包中的实现类
2,快速入门:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; /** * JDBC快速入门 */ public class JdbcDemo1 { public static void main(String[] args) throws Exception { //1. 导入驱动jar包 //2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //3.获取数据库连接对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root"); //4.定义sql语句 String sql = "update account set balance = 2000 where id = 1"; //5.获取执行sql的对象 Statement Statement stmt = conn.createStatement(); //6.执行sql int count = stmt.executeUpdate(sql); //7.处理结果 System.out.println(count); //8.释放资源 stmt.close(); conn.close(); } }
五、JDBC-API 详解 (DriverManager)
驱动管理类 作用:
1.注册驱动
2.获取数据库连接
Class.forName("com.mysql.jdbc.Driver");
六、JDBC-API 详解 (Connection)
数据库连接对象 作用:
1.获取执行SQL的对象
2.管理事务
普通执行SQL对象 Statement createStatement(); 预编译SQL的执行SQL对象:防止SQL注入 PreparedStatement prepareStatement(sql); 执行存储过程的对象 CallableStatement prepareCall(sql);
七、JDBC-API 详解 (Statement)
executeUpdate(sql); //执行DML、DDL语句 返回int类型 //返回值:(1)DML语句影响的行数 (2)DDL语句执行后,执行成功也可能返回0 executeQuery(sql); //执行DQL语句 返回ResultSet类型 //返回值:(1)ResultSet jie'guo'ji
八、JDBC-API 详解 (ResultSet)
结果集对象:封装了DDL查询语句的结果 stmt.executeQuery(sql); //执行DQL语句,返回ResultSet对象
使用步骤:
游标向下移动一行,并判断改行是否有数据:next()
获取数据:getXxx(参数)
//循环判断游标是否是最后一行末尾 while(rs.next()){ rs.getXxx(参数); }
九、JDBC-API 详解 (PreparedStatement)
SQL注入:通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
原理:
好处:
预编译SQL,性能更高。
防止SQL注入,将敏感字符进行转义。
十、数据库连接池
数据库连接池简介:
数据库连接池是一个容器,负责分配,管理数据库连接(connection)。
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
好处:
资源重用
提升系统响应时间
避免数据库连接遗漏。
数据库连接池实现