-
Java Database Connectivity Java数据库连接,实际上JDBC就是java中一套和数据交换的API(application Program Interface 应用程序编程接口)
JDBC的内容从ListUserServlet分离出来,使用一个类,单独封装起来。这样的类,这样的类,在行业中称为 DAO 类
DAO中方法的命名规范(了解)
DAO中的方法涉及4种操作:增删改查 (Create Read Update Delete)增: insertXXX() 或者 saveXXX() saveUser()
删: deleteXXX() 或者 removeXXX() deleteUser() delUser()
改: updateXXX()
查:
查1条: getXXX()
查多条: listXXX()如果这些操作有条件,在后面加By。。。
getUserByID()->通过id查用户
getUserByUsername()->通过用户名查用户 -
如何使用JDBC
创建Maven工程
去maven私服搜索mysql 找到5.1.6驱动的坐标 maven.tedu.cn maven.aliyun.com
1.注册驱动
Class.forName(“com.mysql.jdbc.Driver”); driver,驱动
2.获取连接对象
Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/newdb3”,“root”,"");
3.创建SQL执行对象
Statement stat = conn.creatStatement(); Statement,声明
PreparedStatement ps = conn.prepareStatement(sql);
4.执行SQL语句
stat.excute(sql);excute,执行
conn.close;
@Test 测试
Statement
execute() 此方法可以执行任意SQL语句,但是推荐执行DDL数据定义语言
executeUpdate() 此方法执行增删改SQL语句
executeQuery() 此方法执行查询SQL语句 ,返回值为ResultSet结果集对象
ResultSet结果集
next() 判断是否有下一条数据,有则返回true 否则false,同时游标往下移动一位
getString/Double/float/Int() 获取结果集中的数据
getString(“ename”) 获取字段名为ename的数据
getString(1) 查询结果中 字段的位置
数据库连接池DBCP Database Connection Pool
为什么使用dbcp:可以将连接重用,节省资源,提高执行效率
create table jdbcuser(id int,username varchar(10),password varchar(10)); insert into jdbcuser values(1,‘libai’,‘admin’),(2,‘liubei’,‘123456’);
select count(*) from jdbcuser where username=‘libai’ and password=‘admin’;
select count(*) from jdbcuser where username=‘sdfsdf’ and password=’’ or ‘1’=‘1’
预编译SQL执行对象 PreparedStatement
当SQL语句中存在变量的时候使用PreparedStatement,没有变量时使用Statement
PreparedStatement好处:
代码可读性高不易出错
可以避免SQL注入,因为在编译时已经把SQL语句中的逻辑锁死,不会被替换进去的变量影响
批量操作
如果不是用批量操作,假设有5条SQL语句需要执行,则需要传输5次,使用批量操作可以将5次传输合并成一次传输,充分利用带宽,从而提高执行效率
事务
关掉MySQL的自动提交 相当于执行begin指令 conn.setAutoCommit(false);
提交 conn.commit();
回滚 conn.rollback();
准备表和数据 create table jdbcaccount(id int,name varchar(10),money int); insert into jdbcaccount values(1,‘超人’,50),(2,‘蝙蝠侠’,5000);
需求:程序每执行一次 蝙蝠侠给超人转账2000 如果蝙蝠侠的钱不够时提示转账失败
获取自增主键值
demo01 测试DBUtils的查询
demo02 数据库连接池
demo03 测试SQL注入 登录练习 PreparedStatement
demo04 statement的批量操作
demo05 preparedStatement的批量操作
demo06 分页查询
demo07 事务练习
demo08 获取自增主键值
demo09 球队球员练习
demo10 元数据