博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的Java学习笔记——JDBC
阅读量:3958 次
发布时间:2019-05-24

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

前言:

MYSQL基础(也是我写滴):https://blog.csdn.net/qq_44876636/article/details/115555442

访问MySQL数据库需要用到第三方的类,这些第三方的类,都被压缩在一个叫做Jar的文件里。为了代码能够使用第三方的类,需要为项目导入mysql的专用Jar包。

下载mysql-jdbc的jar包:https://dev.mysql.com/downloads/connector/j/


学习内容:

一. 写一个JDBC程序的流程

步骤 1 : 为项目导入mysql-jdbc的jar包

步骤 2 : 初始化驱动
步骤 3 : 建立与数据库的连接
步骤 4 : 创建Statement
步骤 5 : 执行SQL语句
步骤 6 : 关闭连接

差不多酱紫:在这里插入图片描述

二. Statement类

public class Statement ,一个Statement对象表示一个原始语句。

  • 用途:调用方法执行SQL语句。

  • 常用方法:

方法 解读
public Object getTarget() 返回此语句的目标对象。
public String getMethodName() 返回要调用的方法的名称。
public Object[] getArguments() 返回要调用的方法的参数。
public void execute() throws 异常 execute方法查找名称与 methodName属性相同的方法,并调用目标方法。
public String toString() 使用Java风格的语法打印此语句的值。

三. PreparedStatement接口

public interface PreparedStatement extends Statement,表示预编译的SQL语句的对象。

  • 用途:和 Statement一样,PreparedStatement也是用来执行sql语句的。与创建Statement不同的是,需要根据sql语句创建PreparedStatement。除此之外,还能够通过设置参数,指定相应的值,而不是Statement那样使用字符串拼接
  • 使用PreparedStatement的好处:
    (1)使用参数设置,可读性好,不易犯错
    (2)有预编译机制,性能比Statement更快
    (3)可以防止SQL注入式攻击
  • 常用方法:
方法 解读
public void setXXX(int parameterIndex, XXX x) throws SQLException 将指定的参数设置为给定的Java XXX值。 当驱动程序将其发送到数据库时,将其转换为SQL XXX值。
public boolean execute() throws SQLException 执行此 PreparedStatement对象中的SQL语句,这可能是任何类型的SQL语句。
public ResultSet executeQuery() throws SQLException 执行此 PreparedStatement对象中的SQL查询,并返回查询 PreparedStatement的 ResultSet对象。
public int executeUpdate() throws SQLException 执行此 PreparedStatement对象中的SQL查询,它必须是一个SQL数据操纵语言(DML)语句。
public void addBatch() throws SQLException 向这个 PreparedStatement对象的一批命令添加一组参数。
public void clearParameters() throws SQLException 立即清除当前参数值 。
public ResultSetMetaData getMetaData() throws SQLException 检索一个 ResultSetMetaData对象,其中包含有关执行此 PreparedStatement对象时将返回的 ResultSet对象的列的信息。

四. 对数据库的基本操作

就执行不同的SQL语句。

查询的结果可以保存在ResultSet中。
ResultSet中有好多public void getXXX(参数)的方法。参数可以是字段名,也可以是字段的顺序。

五. 对数据库的特殊操作

  • 获取自增长id:

    在Statement通过execute或者executeUpdate执行完插入语句后,MySQL会为新插入的数据分配一个自增长id,(前提是这个表的id设置为了自增长,在Mysql创建表的时候,AUTO_INCREMENT就表示自增长)。
    无论是execute还是executeUpdate都不会返回这个自增长id是多少。需要通过Statement的getGeneratedKeys获取该id。

  • 获取表的元数据

    元数据概念:和数据库服务器相关的数据,比如数据库版本,有哪些表,表有哪些字段,字段类型是什么等等。
    需要使用DatabaseMetaData类获取:
    在这里插入图片描述

六. 事务

在MySQL中,只有当表的类型是INNODB的时候,才支持事务,所以需要把表的类型设置为INNODB,否则无法观察到事务。

在默认情况下,MySQL每执行一条语句,都是一个单独的事务。
如果需要多条语句一起执行(同时成功或者失败),那么就需要开启事务和结束事务。
Connection的三个方法与事务有关:

  • setAutoCommit(boolean autoCommit):设置为是否提交事务。如果为true,则自动提交;如果是false,那就是开启事务(关闭自动提交)
  • commit() 提交事务(手动提交)
  • rollback() 回滚事务
    事务的四大特性(ACID):原子性,一致性,隔离性,持久性。

七. ORM(对象和关系数据库的映射)

一个对象,对应数据库里的一条记录

八. DAO模式(数据访问对象)

就是写一个类,把访问数据库的代码封装起来。DAO在数据库与业务逻辑(Service)之间。

  • 实体域:即操作的对象,例如我们操作的表是user表,那么就需要先写一个User类;
  • DAO模式需要先提供一个DAO接口;
  • 然后再提供一个 DAO接口的实现类;
  • 再编写一个DAO工厂,Service 通过工厂来获取DAO实现。

九. 常用数据库连接池

与线程池类似的,数据库也有一个数据库连接池。

  • C3P0连接池:
  • DBCP连接池:
  • Proxool连接池:

学习时间:

加数据库一起5天

你可能感兴趣的文章
Eclipse Debug调试
查看>>
Eclipse Debug调试
查看>>
Hibernate的注解和XML
查看>>
JavaScript闭包
查看>>
JavaScript原型
查看>>
JavaScript原型
查看>>
JavaScript原型
查看>>
JDK工具
查看>>
JDK工具
查看>>
JNA-JNI升级版
查看>>
JNA-JNI升级版
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>