JDBC : 就是把Java和数据库连接起来,能够在java的编译器中对数据库进行操作的方式。
JDBC的本质就是java中有许多官方定义的,用来操作数据库的接口,这些接口可以操作所有的关系型数据库,并且每一种类型的数据库,都有自己独有的jar包(其中包含了一些实现类),供这些接口实现,而这些jar包也叫做数据库驱动。真正要执行代码的其实就是数据库驱动中的代码(多态)。
JDBC基本使用步骤:
1导入jar包(数据库驱动):把mysql的jar包导入到编译器中。
2 注册驱动:让程序知道使用的是那种类型的数据库驱动
Class.forname(com.mysql.jdbc.Driver)(这一步在mysql5之后可以省略)
3 获取数据库连接对象:连接到具体的数据库。
调用DriverManager中的静态方法Getconnection,获取用于数
据库链接的对象connertion 对象。
Connertion a=drivermanager.getconnection(“jdbc:mysql://ip:端口号/数据库名称”,”用户名”,”密码”)
4 获取执行sql语句对象:通过connertion对象中的方法createstatement获取
Statement b = a.createStatement();
5创建sql语句:使用字符串的形式,直接书写
String c=”...”
6执行sql语句:使用Statement中的executeupdate执行,返回受到影响的行数
Int d=b.executeupdate(c)
7 处理结果:处理d,也会就是受到影响的行数
8 释放资源:a.close();,b.close();
Jdbc常用的对象类型
个人理解:定义中说java提供接口,数据库驱动提供实现类,但是这些实现类在哪里?完全看不到,我所见到的接口和类都是jdk中的,不属于数据库驱动(jar包),因此我猜测数据库驱动的实现类,并不是不存在,而应该都是隐性的。
1 DriverManager :这是一个类,驱动管理对象
1注册驱动:static void registerDriver(Driver driver),这也是一个注册驱动,但是不常用,与我们class.forname方法的性质是一样的,因为Driver这个类的源码中有一个静态代码块,在使用class.forname方法时,这个静态代码块会被执行一次,其内容就是 registerDriver方法
2 获取数据库连接对象:
static Connection getConnection(string ,string,string),获取连接对象。
2 Connection:接口,数据库连接对象,事务
1. 获取执行sql 的对象
Statement createStatement()
PreparedStatement prepareStatement(String sql)
- 管理事务:
开启事务:
setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
提交事务:commit() 回滚事务:rollback()
3 Statement:接口,执行sql的对象
1. boolean execute(String sql):可以执行任意的sql (了解)
2. int executeUpdate(String sql):执行DML,DDL,返回受影响的行
数,返回值>0的则执行成功,反之,则失败。
- ResultSet executeQuery(String sql):执行DQL(select)语句
4 ResultSet:接口,结果集对象,用于查询结果,当执行sql语句是查询语句时(Statement的executeQuery方法的返回值),使用这个接口接收。
1 next():返回一个布尔值,让游标(从最上方表头开始),下移一行。
2 ??? get???(int):???代表要获取的数据类型,参数int则是获取第几列的数据字段(不是索引,从1开始),并且将这个字段返回。
??? get???(string):参数string代表根据列名获取数据字段。
这两个方法与迭代器的使用类似,一般结合while语句使用。
5 PreparedStatement:也是用来执行sql语句的,和Statement相比较这个才是安全的接口,避免一些安全问题(有一些sql的特殊关键字参与字符串的拼接)。
简单地说,就是用占位符?。来代替sql语句中的条件查询where后的数据字段。
和Statement的操作流程相比较,它是在获取 PreparedStatement对象的时候,就把要执行的sql语句放入其中,用setXXX方法对占位符?进行赋值。
随后在执行sql语句的时候,不会向其中放入参数。
我们也可以自己定义一个jdbc的工具类,来简化驱动,和链接数据库的代码,包括处理异常的代码。但是其步骤需要使用到配置文件,我不会。
JDBC 事务管理:和数据库中一样
还是分三步 1 开启事务:根据Connection对象中setAutoCommit(false)方法
去开启事务,要在数据库连接之后,且在sql语句执行之前。
2 提交事务 sql语句执行之后添加。C..对象中的commit();方法
3 回滚事务 在catch语句中添加。C..对象中的rollback();方法