/*
JDBC:java database connectivity//用Java连接数据库
JDBC是定义了一套操作所有关系型数据库的规则(接口),而各个关系型数据库(像MySQL)里定义了不同
的JDBC实现类(也称数据库驱动jar包)来操作数据库,
我们可以使用这套接口来实现编程,但是真正执行的代码是再驱动jar包中的实现类
/
JDBC5大常用对象
/*
- 1.DriverManager数据库管理对象(调用getconnection()获取连接对象)
- 2.Connection数据库连接对象
- 可以获取执行sql语句的对象(用createStatement()和PrepareStatement())
- 可以管理事务
- (1.开启事务:用方法setAutoCommit(Boolean AutoCommit)当设置布尔值为false时,可开启事务
- 2.提交事务:用commit()
- 3.回滚事务:rollback()
- )
- 3.Statement执行sql语句的对象(用于静态sql语句,容易产生sql注入问题)
- (该对象可以调用executeupdate(String sql)和executequery(String sql)用来执行sql语句)
- 其中executeupdate(String sql)
- (该方法是执行DML语句(即insert,delete,update语句比较常用)和DDL语句(即create,drop,alter比较少用))
- 方法返回值是int类型 返回值是通过执行该sql语句数据库表中受影响的行数
- 通过其返回值可判断sql语句是否操作成功,当返回值是>0则成功
- executequery(String sql)方法返回值是ResultSet类型,常用于DQL语句
- 4.Resultset返回数据数据的结果集对象
- 首先取数据库的表数据有一个叫光标(专业称游标,相当于索引)
*该接口里有next(),用来移动光标,再取数据库的表数据之前光标再列名那一行, - 执行next()方法后光标就向下移动一行,移动到那行就取那行的全部列的数据,
- 该方法返回的是一个Boolean值所以可以判断该行是否是表的最后一行末尾
- (即该行没有数据,如果有数据则Boolean值为true,反之为false)
- 该接口还有getxx方法()xx为获取数据列的数据类型,该方法参数为有两种:
- 第一种为传字符串,字符串为列名例如name列为String类型(即getString(“name”))
- 第二种为传一个int值,该值为列的索引(该索引从1开始)例如name列为String类型在第一列(即getString(1))
*5.Preparestatement执行sql语句的对象(用于动态sql语句,解决sql注入问题,其中sql语句的参数用占位符?代替) - 用连接对象调用preparestatement()获取执行sql语句的对象,该方法参数传递sql语句
- 再用Preparestatement对象调用setXX方法(问号的位置,对问号的赋值)XX为需要赋值的数据的数据类型
- 在通过Preparestatement对象调用executeQuery()或executeUpdate(),不传参
*/