DriveManager类

DriveManager类有两个作用:注册驱动与获得数据库连接。

注册驱动使用registerDrive()方法实现,建立连接使用getConnection()方法实现。

registerDriver()

在此类中有一段静态代码使用DriverManager.registerDriver(new Driver());完成了驱动的注册,所以已经无须手动调用此方法注册。

getConnection()

此方法有三个String类型参数:

  • url:与数据库连接的路径
  • user:与数据库连接的用户名
  • password:与数据库连接的密码

此处主要涉及URL的写法,比较特殊:jdbc:mysql://localhost:3306/$DB_NAME。其中:

  • jdbc:连接数据库的协议
  • mysql:jdbc的子协议
  • localhost:连接的MySQL数据库服务器的主机地址。连接是本机就可以写成localhost,如果连接不是本机的,就需要写上连接主机的IP地址或域名。
  • 3306:MySQL数据库服务器的端口号
  • $DB_NAME:数据库名称

该函数将会与数据库连接,如果连接成功则返回一个Connection类的数据库连接对象,若连接失败则返回null。

Connection类

Connection类即数据库连接对象,有两大功能:创建用于执行SQL语句的对象和管理事务

以下三个方法可以创建用于执行SQL语句的对象:

  • createStatement():返回一个Statement对象,用于执行SQL
  • prepareCall():返回一个CallableStatement对象,用于调用数据库中存储过程
  • prepareStatement():返回一个PreparedStatement对象,用于执行SQL并对SQL进行预处理以解决SQL注入漏洞。

以下三个无返回值的方法用于管理数据库事务:

  • getAutoCommit():将此连接的自动提交模式设定为给定状态
  • commit():使所有上一次提交/回滚后进行的更改成为永久更改,并释放此Connection对象当前的数据库锁
  • rollback():取消在当前事务中进行的所有更改,并释放此Connection对象当前的数据库锁

Statement接口

Statement 接口提供了三种执行 SQL 语句的方法:

  • executeQuery()
  • executeUpdate()
  • execute()

我们需要针对不同的SQL语句使用这三种方法

executeQuery()

executeQuery()返回一个ResultSet类的对象,该对象是一个结果集。这个方法只能被用于查询语句,比如用的最多的SELECT语句,执行完语句后会返回代表查询结果的ResultSet对象。随后可以通过ResultSet类中的getString()方法来获取读到的数据。

executeUpdate()

executeUpdate()常用于执行INSERTUPDATEDELETECREATE TABLE等非查询类语句。常用于数据库与数据表的增删改。它返回一个int类型的值,对于INSERTUPDATEDELETE等操作,会返回数据表中受影响的行数;对于CREATE TABLE等的操作,它的返回值总为0。

execute()

execute()可以用于执行任何SQL语句。它的返回值是一个bool类型的值,来表明该SQL语句是否返回了ResultSet对象。如果执行后得到的第一个结果是ResultSet则返回true,否则返回false。返回为true后可以利用getResultSet()方法来获取对应的ResultSet类的结果集对象。此函数更复杂,推荐仅当不知道SQL语句的具体类型时使用此函数来执行。

ResultSet接口

ResultSet类是查询的结果集。主要使用两个方法来进行操作:getString()和next()。

getString()

getString()方法接受一个String类型的参数,作为要获得的字段的字段名。它会返回一个String类型的值,就是ResultSet对象当前指向行的所求字段的值。此方法多用于处理查询所得值。

next()

next()方法会将该ResultSet对象所指向行的光标向下移动一行。它返回一个bool类型的值,当光标已经不能下移时会返回false,否则返回true并下移光标。此方法可以用于遍历查询所得数据或者判断查询是否有查到值。