目录
什么是JDBC?
JDBC就是通过java对数据库建立连接
JDBC的核心类:
DriverManager(驱动管理者)
1. 注册驱动:这可以让JDBC知道要使用的是哪个驱动;
2. 获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。
Connection(数据库连接对象)
Connection最为重要的一个方法就是用来获取Statement对象
Statement(SQL执行对象)
作用:
1.向数据库发送SQL
2.执行SQL,并且获取执行结果
核心方法:
1. void executeUpdate(String sql):执行更新操作(insert、update、delete等);
2. ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;
ResultSet(结果集对象)
将查询结果封装到Resultset结果集中。结果集是一个二维的表格,有行有列。
核心方法:
1. boolean next():使“行光标”移动到下一行,并返回移动后的行是否存在;
2. XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。
3. XXX getXXX(String colName):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。
如何使用JDBC
1.将对应版本的驱动包放入项目的lib目录下,然后将驱动包载入到项目中
2.加载驱动(通过Class类的forname方法通知系统加载对应驱动)
Class.forName("com.mysql.cj.jdbc.Driver");
3.获取连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/wte?useUnicode=true&characterEncoding=utf8&useSSL=false", "root", "root");
连接的组成分为三部分:
url:
jdbc:mysql:这是URL的固定前缀
localhost:3306:这是主机和端口号
wte:是数据库的名称
useUnicode=true&characterEncoding=utf8&useSSL=false:这是字符集,编码,加密的设置
user:账号
password:密码
4.创建执行对象并且执行sql语句(下例是执行DML语句的例子)
Statement statement = connection.createStatement();
String sql = "DELETE from `emp` where `empno`='"+ emp.getEmpno()+"'";
statement.executeUpdate(sql);
连接池
作用:避免频繁地创建和销毁连接
C3P0连接池使用步骤
导入dbutils.jar包
在src目录下新建c3p0-config.xml文件,在文件中写入配置
创建工具类对象:public static ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource("mysql");
获取连接对象: Connection con = comboPooledDataSource.getConnection
归还连接对象: con.close()
dbUtil
JDBC的工具类,封装了对数据库操作的方法
使用方法:
1.导入dbutils.jar包
2.创建工具类对象
ComboPooledDataSource ds = new ComboPooledDataSource("mysql");
QueryRunner qr = new QueryRunner(qr);
主要方法:
查询:update(String sql,Object...params);
修改:query(String sql,ResultSetHandler rs,object...params);
resulthandler
作用:用于在关闭连接前处理结果集
实现类:
①ArrayHandler:把结果集中的第一行数据转成对象数组。
②ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
③BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
④BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
⑤MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
⑥MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
⑦ColumnListHandler:将结果集中某一列的数据存放到List中。
⑧KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。
⑨ScalarHandler:获取结果集中第一行数据指定列的值,常用来进行单值查询
事务
四大特性(ACID)
原子性
事务是一个完整的操作,各个步骤都不可分,要么都执行,要么都不执行
一致性
当事务完成时,数据必须一致
隔离性
并发的事务之间彼此隔离,不依赖或影响其他事务
持久性
事务完成后对数据库的修改是永久的
构成
开始:Begin
主体
结束:Commit