jdbc学习笔记

连接步骤:

  1. 注册驱动
    Class.forName("com.mysql.jdbc.Driver");
  2. 获取连接对象
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/newdb3", "root", "123456");
    System.out.println(conn);
  3. 创建执行SQL语句的对象
    Statement stat = conn.createStatement();
  4. 执行SQL
    String sql = "create table jdbct1(id int primary key auto_increment,name varchar(10))";
    stat.execute(sql);
  5. 关闭资源
    conn.close();

Statement

  • execute(sql) 执行sql,返回值为布尔值,返回值true代表有结果集 false代表没有结果集,此方法可以执行任意SQL,但是只推荐执行DDL(数据定义语言)
  • executeUpdate(sql) 此方法执行insert、update、delete,返回值int,返回值代表生效行数
  • executeQuery(sql) 此方法执行select 返回值为ResultSet(结果集)

ResultSet

  • 两种获取数据的方式
  1. rs.getString("查询结果中字段的名称");
  2. rs.getString(查询结果中字段的位置); 位置从1开始

连接池DBCP

  • Database Connection Pool 数据库连接池
  • 为什么使用连接池: 将连接重用,避免资源浪费,提高执行效率
    dataSource.setInitialSize(3);//初始连接数量
    dataSource.setMaxActive(5);//最大连接数量

PreparedStatement

  • 预编译sql执行对象
  • 好处:
  1. 代码结构整齐,可读性高
  2. 带有预编译功能,在创建对象时就把sql逻辑固定,可以避免sql注入( ' or '1'='1)
  3. 因为带有预编译功能,如果批量插入多条数据时,可以只编译一次sql,从而提高执行效率
  • 当sql语句中没有变量时使用Statement,如果有变量时使用PreparedStatement

分页查询

		String sql = "select name from jdbcperson "
				+ "limit ?,?";
		PreparedStatement ps = 
				conn.prepareStatement(sql);
		ps.setInt(1, (page-1)*count);
		ps.setInt(2, count);
		ResultSet rs = ps.executeQuery();
		while(rs.next()) {
			String name = rs.getString(1);
			System.out.println(name);
		}

事务

  1. 关闭事务自动提交
    conn.setAutoCommit(false)
  2. 提交事务
    conn.commit();
  3. 回滚事务
    conn.rollback();
posted @ 2019-04-26 00:08  Libbo-yu  阅读(97)  评论(0编辑  收藏  举报