Java小白学习指南【day28】---JDBC入门(2)

1、 PreparedStatement的使用

一、为什么要使用PreparedStatement

登录使用 Statement 会出现SQL注入问题

例如:密码设置为 ’ OR 1=1 OR ’ 则可以测试SQL注入效果

二、 PreparedStatement的使用

可以使用SQL语句模板

对应的值使用 ? 占位

不要忘了?中的值后期需要进行设置

三、 PreparedStatement与Statement对比

PreparedStatement : 预处理语句对象

1 允许咱们写SQL模板 可以避免字符串拼接的麻烦 造成注意 : ? 只能要特定的地方写

2 避免SQL注入问题(只要拼接字符就会SQL注入的危险)

3 PreparedStatement 在某些数据库中性能比 Statement 更好

2、事物

事务的四大特性(ACID)

原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操 作要么都发生,要么都不发生。

**一致性(Consistency)**事务前后数据的完整性必须保持一致。

**隔离性(Isolation)**事务的隔离性是多个用户并发访问数据库时,数据库为每 一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要 相互隔离。

**持久性(Durability)**持久性是指一个事务一旦被提交,它对数据库中数据的改 变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

3、返回主键

在添加数据后,会将该条数据的主键值返回, 功能关键 : Statement.RETURN_GENERATED_KEYS


public class HW3 {
    
    
	@Test
	public void testPK() throws Exception {
    
    
		Connection conn = JDBCUtil.getConnection();
		PreparedStatement pr = conn.prepareStatement("insert into people (name,password) values (?,?)",
				Statement.RETURN_GENERATED_KEYS);
		pr.setString(1, "麦克格雷迪");
		pr.setString(2, "1");
		pr.executeUpdate();
		ResultSet ge = pr.getGeneratedKeys();
		while (ge.next()) {
    
    
			System.out.println(ge.getLong(1));
		}
		JDBCUtil.close(ge, pr, conn);
	}
}

4、连接池

就是装连接对象的容器,可以极大的提升咱们操作数据库的性能

1、四大金刚(必备)

  • 驱动名称 driverClassName
  • 地址路径 url
  • 用户名 username
  • 密码 password

2、其他常用属性

  • 初始连接数 initialSize
  • 最大连接数 MaxActive
  • 最大等待时间 maxWait

3、DBCP功能实现

①、导包:

commons-dbcp-1.4.jar : 数据源的功能包

commons-pool-1.5.6.jar` : 池子包

②、准备jdbc.properties

③、使用关键对象:BasicDataSource / 使用BasicDataSourceFactory 工厂一步到位

④、DBCPUtil : 连接池工具类

猜你喜欢

转载自blog.csdn.net/WLK0423/article/details/110099100