概念:
    JDBC (Java DataBase Connectivity):Java数据库连接,Java语言操作数据库。是官方(sun公司)定义的一套操作所有关系型数据库的规则, 即接口。各个数据库厂商去实现这个接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
 
实现步骤:
1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
    1.1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
    1.2.右键-->Add As Library
2. 注册驱动
3. 获取数据库连接对象 Connection
4. 定义sql
5. 获取执行sql语句的对象 Statement
6. 执行sql,接受返回结果
7. 处理结果
8. 释放资源
 
具体代码实现:
  • 注册驱动
            
  • 获取数据库连接对象(Connection)    
  • 定义SQL语句
         
  • 获取执行SQL语句对象的(Statement)
         
  • 执行SQL,返回结果
         
  • 释放资源
         
         
 
详解各个对象:
  • DriverManager:驱动管理对象
         功能:
                1、注册驱动:告诉程序使用哪一个数据库驱动jar
                      * 代码注意:在使用Class.forName("com.mysql.cj.jdbc.Driver")时,会提示报错,需要使用try或throw
                     
                      另外:MySQL5之后的驱动jar包可以省略注册驱动的步骤
                2、获取数据库连接:
                    * 参数:
                            -- url:指定连接的ip地址和端口
                                        jdbc:mysql://IP地址:端口/数据库名?serverTimezone=时区
                                        注意:如果连接的是本机mysql服务器,且端口为3306,则url可以简写为:
                                                   jdbc:mysql:///数据库名?serverTimezone=时区
                            -- user:用户名
                            -- password:密码
                    * 对象实现
                            Connection 对象名 = DriverManager.getConnection( url, user, password )
 
  • Connection:数据库连接对象
         功能:
                1、获取执行sql的对象:
                      Statement 对象名 = 数据库连接对象.createStatement( )
                      PreparedStatement 对象名 = 数据库连接对象.prepareStatement(String sql) 
                     
                2、管理事务:
                      开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
                      提交事务:commit( )
                      回滚事务:rollback( )
 
  • Statement:执行sql的对象
         功能:执行sql
                1、boolean execute(String sql):可以执行任意的sql,返回执行成功与否的布尔值
                2、int executeUpdate(String sql):可以执行DML(insert, delete, update)语句,DDL(create, alter, drop)语句,返回影响的行数,如果行数大于0,说明执行成功,否则失败
                3、ResultSet  executeQuery(String sql):执行DQL(select)语句
 
  • ResultSet:结果集对象,封装了查询的结果
         方法:
                1、boolean next( ):判断当前行是否是最后一行末尾,如果是,返回false,否则返回true
                2、getXxx(参数):获取指定列的数据
                     * 其中,Xxx有如下类型:
                            -- int getInt( )
                            -- String getString( )
                            -- boolean getBoolean( )
                            -- date getDate( ) 等等
                            可以参考下表进行变换
 
 
                    * 参数:
                            -- int类型:代表列的索引,从1开始,比如说想获取第一列的数据,用getString(1)
                            -- String类型:代表列(字段)的名称,比如:getint("calary")
                        注意:想要获取的列和使用的函数类型要尽量保持一致。
 
  •  PreparedStatement:执行sql的对象,是Statement的子接口
            1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题
                1. 输入用户随便,输入密码:a' or 'a' = 'a
                2. sql:select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a'
 
            2. 解决sql注入问题:使用PreparedStatement对象来解决
            3. 预编译的SQL:参数使用?作为占位符
            4. 步骤:
                1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
                2. 注册驱动
                3. 获取数据库连接对象 Connection
                4. 定义sql
                * 注意:sql的参数使用?作为占位符。 如:select * from user where username = ? and password = ?;
                5. 获取执行sql语句的对象 PreparedStatement  Connection.prepareStatement(String sql)
                6. 给?赋值:
                    * 方法: setXxx(参数1,参数2)
                        * 参数1:?的位置编号 从1 开始
                        * 参数2:?的值
                7. 执行sql,接受返回结果,不需要传递sql语句
                8. 处理结果
                9. 释放资源
            
 
            5. 注意:后期都会使用PreparedStatement来完成增删改查的所有操作
                1. 可以防止SQL注入
                2. 效率更高
 
 
 

JDBC概念和基本用法的更多相关文章

  1. Docker 概念及基本用法

    Docker 概念及基本用法 一. 本节内容简介 本实验中我们初步接触Docker的概念和基本用法.需要依次完成下面几项任务: 理解Docker是什么 学习如何在Linux上安装Docker 学习如何 ...

  2. PHP-流的概念与详细用法

    Stream是PHP开发里最容易被忽视的函数系列(SPL系列,Stream系列,pack函数,封装协议)之一,但其是个很有用也很重要的函数.Stream可以翻译为“流”,在Java里,流是一个很重要的 ...

  3. chipmunk 物理引擎的基本概念和基本用法

    chipmunk是一个开源2D物理引擎, 项目主页:http://code.google.com/p/chipmunk-physics/ 工作需要研究了一下,这个引擎的资料还是不多,我阅读了所有的文档 ...

  4. JDBC概念和使用

    JDBC学习:    JAVA的数据获取方式:        1 直接声明变量并赋值.                 2 Scanner类控制台输入        3 IO流(将硬盘存储中的数据读取 ...

  5. JDBC概念理解

    ##JDBC: 概念:Java DataBase Connectivity  Java 数据库连接  Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则 ...

  6. 【Java EE】Day05 JDBC概念、对象、控制事务

    一.基本概念 1.概念 Java Database Connectivity:Java数据库连接 2.本质 SUN公司提供的操作所有关系型数据库的规则,是一套接口 各厂商实现此接口,提供相应的驱动ja ...

  7. Spark SQL基本概念与基本用法

    1. Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了两个编程抽象分别叫做DataFrame和DataSet,它们用于作为 ...

  8. Spark RDD基本概念与基本用法

    1. 什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.RDD具 ...

  9. qt model--view-delegate模式的界面设计概念,ListView用法

    最经典的界面设计模式,必须知道. 作为 一种经典到 不能 再 经典 的 架构 模式, qt的model--view-delegate大 行其 道 有其 必然 的 道理. 通过 把 职责. 性质相近的 ...

  10. Docker的概念及基本用法

    Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可 ...

随机推荐

  1. 流程图draw.io自选中文字体

    draw.io免费好用,完全可以取代Visio. 唯独缺省选择都是英文字体.但要选择中文字体也可以自行添加,步骤: 确保系统里已经安装了相应中文字体.ubuntu下Google思源字体在/usr/sh ...

  2. vue面试题及答案(1)

    vue面试题,知识点汇总(有答案) 一. Vue 核心小知识点 1.vue 中 key 值的作用 key     的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VN ...

  3. ubuntu22.04安装 kubernetes(docker)

    初始化检查 操作系统:ubuntu22.04 LTS docker:20.10.18 kubelet: v1.23.6 kubeadm:v1.23.6 kubectl: v1.23.6 1.校准时间: ...

  4. ThinkPHP接收header自定义参数

    // 请求拦截,配置Token等参数 Vue.prototype.$u.http.interceptor.request = (config) => { config.header['conte ...

  5. modelsim仿真含Xilinx原语代码块

    很早之前笔者已经写过关于modelsim仿真的文章了,不过之前笔者做的仿真都是有现成代码块的仿真.对于那些使用原语的代码块进行仿真时则需要产生相关的仿真库,笔者这里使用modeltech64_2020 ...

  6. Keil51单片机解决数字显示不稳的问题

    Keil51单片机解决数字显示不稳的问题 数字显示不稳,就是我们人眼的特点决定的,0.1秒的残留现象,低于这个值人眼发现不了其中变化,大于这个值就会出现同一个数字闪烁的现象.解决的方法就是所有数字,第 ...

  7. RTC@@@Real-Time Clock(实时时钟的简称)及电路问题分析

    RTC@@@Real-Time Clock(实时时钟的简称) 实时时钟(Real-Time Clock)是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,提供稳定的时钟信号给后续电路用.主要功能有 ...

  8. vue3插槽变化

    1.默认插槽还是跟以前一样 2.使用具名插槽时,子组件不变 以前的父组件掉用的时候 <template slot="example"> </template> ...

  9. zerotier的planet服务器(根服务器)-搭建教程

    应用场景介绍: 利用阿里云服务器,搭建根服务器,把不同局域网打通,实现内网穿透,远程控制. 准备工具:  1.服务端:云服务器(有公网IP)Centos 7.6 2.客户端:   工控机(或者家里电脑 ...

  10. 使用@RequestBody注解接收的实体类中的某些参数为null

    原因 postman调试接口 为null的参数命名不符合"驼峰法",类似实体类A的属性 cEnterpriseId ,这种命名是不规范的 和lombook的@Data注解有关 用p ...