JDBC复习-基础
发布日期:2022-02-10 08:11:16 浏览次数:18 分类:技术文章

本文共 4141 字,大约阅读时间需要 13 分钟。

此博客仅为本人学习JDBC时所做记录。

JDBC复习

01-JDBC概述

1.1 数据的持久化:

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用

1.2 JDBC的理解:

JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API)

简单理解为:JDBC,是SUN提供的一套接API,使用这套API可以实现对具体数据库的操作(获取连接、关闭连接、DML、DDL、DCL)

1.3 图示理解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n3JV0V7T-1608480337345)(C:\Users\蔲丫丫\AppData\Roaming\Typora\typora-user-images\image-20201220162446479.png)]

好处:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8KQmljCe-1608480337347)(C:\Users\蔲丫丫\AppData\Roaming\Typora\typora-user-images\image-20201220162750176.png)]

从开发程序员的角度:不需要关注具体的数据库的细节

数据库厂商:只需要提供标准的具体实现

1.4 数据库的驱动:

数据库厂商针对于JDBC这套接口,提供的具体实现类的集合。

类似:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7kLLg4sp-1608480337349)(C:\Users\蔲丫丫\Desktop\尚硅谷_宋红康_JDBC核心技术(2019新版)]\3-资料\正在安装驱动.png)

1.5 面向接口编程的思想

JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。

不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。

02-数据库的连接

2.1 数据库连接最终实现方法:

/**     * @Description 获取数据库的连接     * @Author oo     * @return     * @Date 2020-12-17 19:04     * @throws Exception     */    public static Connection getConnection() throws Exception {
// 1.读取配置文件中的4个基本信息 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is); String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass");// 2.获取驱动 Class.forName(driverClass);// 3.获取连接 Connection conn = DriverManager.getConnection(url,user,password); return conn; }

2.2 配置文件说明

其中,配置文件 jdbc.properties :此配置文件声明在工程的 src 下 。

说明:

  1. password为你的数据库账户的密码。
  2. 此url以及driverClass的设置对应于mysql8.0版本。
user=rootpassword=*****url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=truedriverClass=com.mysql.cj.jdbc.Driver

03-JDBCUtil.java

package com.oo.util;/** * @Description 操作数据库的工具类 * @Author oo * @Version * @Date 2020-12-17 19:04 */public class JDBCUtils {
/** * @Description 获取数据库的连接 * @Author oo * @return * @Date 2020-12-17 19:04 * @throws Exception */ public static Connection getConnection() throws Exception {
// 1.读取配置文件中的4个基本信息 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is); String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass");// 2.获取驱动 Class.forName(driverClass);// 3.获取连接 Connection conn = DriverManager.getConnection(url,user,password); return conn; } /** * @Description 关闭连接和Statement的操作 * @param conn * @param ps */ public static void closeResource(Connection conn, Statement ps){
try {
if(ps != null) ps.close(); } catch (SQLException e) {
e.printStackTrace(); } try {
if(conn != null) conn.close(); } catch (SQLException e) {
e.printStackTrace(); } } /** * @Description 关闭资源操作 * @param conn * @param ps * @param rs */ public static void closeResource(Connection conn, Statement ps,ResultSet rs){
try {
if(ps != null) ps.close(); } catch (SQLException e) {
e.printStackTrace(); } try {
if(conn != null) conn.close(); } catch (SQLException e) {
e.printStackTrace(); } try {
if(rs != null) rs.close(); } catch (SQLException e) {
e.printStackTrace(); } }}

04-Statement接口实现CRUD操作(了解)

4.1 弊端

  • 问题一:存在拼串操作,繁琐

    Scanner scanner = new Scanner(System.in);String user = scanner.next();......String sql = "SELECT user,password FROM user_table WHERE user='"+ user +"' AND password= '" + password + "'";
  • 问题二:存在SQL注入问题

    SQL 注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的 SQL 语句段或命令(如:SELECT user, password FROM user_table WHERE user=‘a’ OR 1 = ’ AND password = ’ OR ‘1’ = ‘1’) ,从而利用系统的 SQL 引擎完成恶意行为的做法。

    SELECT user,password FROM user_table WHERE user='1' or ' AND password= '=1 or '1' = '1'    //传入的user:1' or    password:=1 or '1' = '1
  • 其他问题

  1. statement没办法操作Blob类型变量
  2. statement实现批量插入时,效率较低

转载地址:https://blog.csdn.net/qq_45717064/article/details/111465411 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JDBC笔记
下一篇:JDBC复习--数据库事务

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月21日 23时46分44秒