首页 > 技术文章 > JDBC详解

CNLayton 2021-05-10 10:36 原文

简述

  JDBC是Java Data Base Connectivity的缩写,本质就是使用java语言操作数据库。JDBC本质是sun公司定义了所有操作关系型数据库的规则(接口)。每一个不同数据库的厂商,都实现了JDBC接口,提供数据库驱动jar包。我们可以使用这套JDBC接口编程,真正执行的代码是驱动jar包中的实现类。

驱动包的选择

  不同版本的数据库需要不同版本的驱动包,不同版本的jdk也对应不同版本的驱动包

  mysql-connector-java与Mysql对应版本:

  mysql-connector-java与Java对应版本:

  我们可以使用select version();命令查看自己的mysql版本

  然后根据表即可选择对应驱动包版本,我们就能去下载驱动包了:https://repo1.maven.org/maven2/mysql/mysql-connector-java/

在编程中导入jar驱动包

  我们以idea为例,创建一个包,然后把驱动jar包放进去,右键add as library即可

DriverManager类

  DriverManager是驱动管理对象,它用于管理一组JDBC驱动程序的基本服务。

  它主要有两个功能:

注册驱动

  注册驱动就是告诉程序该使用哪个数据库驱动jar包 ,我们使用的是DriverManager.registerDriver();方法,但在代码上我们经常Class.forName("com.mysql.cj.jdbc.Driver");,那是因为Driver类中含有静态代码块,当被加载成class类对象时会自动执行静态代码块来注册驱动

  需要注意的是mysql5版本后可以省略注册驱动这一步,因为当你没有注册驱动的时候,会自动寻找jar驱动包的一个文件,找到对应驱动类

获取数据库连接

  我们通过static Connection getConnection(String url, String user, String password)方法获取数据库的连接

  其中user和password就是我们的用户名和密码,url就是指定的连接路径

  url的语法一般为:jdbc:mysql://(ip地址(域名)):端口/数据库名称

Connection类

  Connection对象是数据库连接对象,表示java程序与数据库的连接

  Connection主要有两个功能:

获取执行sql的对象

  我们可以通过connection对象的Statement createStatement()方法获取一个Statement对象用于执行sql语句

  当然也有PreparedStatement preparedStatement(String sql)获取防止sql注入的PreparedStatement 对象

管理事务

  setAutoCommit(boolean autoCommit);设置为false,即开启事务

  commit();方法可以提交事务

  rollback();对事物进行回滚

Statement对象

  Statement对象用于执行静态sql语句,并返回其生成结果对象。

  boolean execute(String sql); 

  int executeUpdate(String sql); 用于执行更新语句,执行的是DML语句(insert、update、delete)、DDL(create、alter、drop)语句,返回的是影响的行数

  ResulSet executeQuery(String sql);用于执行select语句,返回的是一个结果集对象

ResulSet结果集对象

  ResulSet结果集对象其实就是把sql语句查询出来的数据封装成一个结果集对象

  本质就是一个迭代器,它首先执行查询结果的表头

  我们可以调用resultSet.next()方法,把光标移动到下一行,若下一行没有数据,则不移动返回false

  我们可以通过resultSet的getxxx()方法获取每一行的数据,参数写想获取的列的列名

PrepareStatment对象

  PrepareStatment是Statment的子接口,它也是用于执行sql的对象,但它是预编译sql,所谓预编译sql就是参数使用占位符?作为占位的sql语句,这样做就可以防止用户用sql注入进行攻击。

  我们想要使用PrepareStatment的话,若sql语句是带参的,我们就要将sql语句的参数用?表示,然后通过connect对象获取PrepareStatment对象之后,通过setxxx方法设置sql语句中的参数,格式是setXXX(参数编号,参数值);参数编号从1开始

 

  

 

  

 

 

 

   

 

推荐阅读