JDBC知识点总结

什么是JDBC?
1.JDBC是java database Connectivity:java数据库连接。
2.JDBC入门案例
1)创建java工程

导入jar包

右键buildpath
2)写代码
//1.注册数据库驱动
Class.forName(“com.mysql.jdbc.Driver”);

//2.获取数据库连接
Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/jt_db?useUnicode=true&characterEncoding=utf-8”, “root”, “root”);

//3.获取传输器
Statement stat = conn.createStatement();

//4.利用传输器发送SQL到数据库执行,并返回执行结果
ResultSet rs = stat.executeQuery(“select * from account”);

//5.处理结果:将表中所有的记录输出在控制台
while (rs.next()) {
int id = rs.getInt(“id”);
String name = rs.getString(“name”);
double money = rs.getDouble(“money”);
System.out.println(id+" : “+name+” : "+money);
}

//6.释放资源
rs.close();
stat.close();
conn.close();
3.JDBC详解:
Java想连接数据库的话,那么java程序和数据库之间就要建立联系,数据库有很多,如mysql,Oracle,那么java并不知道数据库内部是如何实现的,那么java就定义了接口,让数据库厂商写实现类,来实现java的接口。
第一步:通过反射加载数据库实现类。
第二步 :DriverManger是管理数据库驱动的类,调用getConnection()方法,创建数据库连接,jdbc:mysql://localhost:3306/jt_db是连接数据库的url,root是数据的账号,后面root是数据库的密码。
第三步:Statement 接口;用于执行SQL语句,返回结果集对象
第四步:ResultSet 接口:是接收返回结果的
第五步:把结果集处理
第六步:关闭掉连接的资源
我们可以把数据库理解为一个仓库,java程序是一个需要数据库资源的商店,当商店需要从仓库取东西是,先有DriverManger这个人来做这件事,它通过地图找到数据库仓库位置,密码就是打开仓库的钥匙,他把这些信息交个Connection这个人,这个人开了一个Statement的车。拿着订单(就是Sql语句),到了仓库根据订单找到商品(查询结果),然后把这个结果返回给商店,连接完成,然后关闭连接。
4.JDBC的增删改查
Jdbc的增删改查前三步和第六步都是一模一样的,只有第四步和第五步不同。
而第四步只有两种方法,一种是stat.executeUpdate()对应增删改操作。
另一种是stat.executeQuery();对应查询操作。
5.SQL注入攻击:
如果用户在提交数据时,掺杂了sql关键字或特殊符号时,就会产生不用密码就可以登录这样的情况。
那么如何防止Sql攻击那:
使用prepareStatement对象代替Statement,PreparedStatement使用预编译机制,在创建PreparedStatement对象时就需要将sql语句传入,传入的过程中参数要用?替代,这个过程回导致传入的sql被进行预编译,然后再调用PreparedStatement的setXXX将参数设置上去,由于sql语句已经经过了预编译,再传入特殊值也不会起作用了。
6.连接池
什么是连接池?
把连接放在连接池中,可以供全局共享,需要连接就从连接中那,用完后再还回去,可以实现连接的复用,并且可以减少连接的开关次数。
为什么使用连接池?
因为连接的过程很耗费时间,如果用连接池的话能减少连接的创建次数提升效率。
7.事物
什么是事物,事物将SQL绑定在一起执行,要么都成功,要么都失败
事物的四大特性
(1)原子性(Atomicity):事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败。
(2)一致性(Consistency):事务执行后,数据库状态与其它业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。
(3)隔离性(Isolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。也就是说,在事中务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。例如:在A事务中,查看另一B事务(正在修改张三的账户金额)中张三的账户金额,要查看到B事务之前的张三的账户金额,要么查看到B事务之后张三的账户金额。
(4)持久性(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。

你可能感兴趣的:(java)