JDBC练习-登录案例和JDBC事务管理
JDBC练习-登录案例
练习:
需求:
1.通过键盘录入用户名和密码
2.判断用户是否登录成功
select * from user where username = "" and password = "";
如果这个sql有查询结果,则成功,反之,则失败
步骤:
1.创建数据库表 user
LoginUser类:
登录方法
main方法
JDBC事务管理
PreparedStatement:执行sql的对象
1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题
1.输入用户随便,输入密码:a ' or 'a' = ' a
2.sql:select * from user where username = ' fhdsjkf ' and password = ' a ' or 'a' = ' a '
2.解决sql注入问题:使用PreparedStatement对象来解决
3.预编译的SQL:参数使用?作为占位符
4.步骤:
1.导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
2.注册驱动
3.获取数据库连接对象 Connection
4.定义sql
注意:sql的参数使用?作为占位符。如:select * from user where username = ? and password = ?;
5.获取执行sql语句的对象 PreparedStatement Connection.prepareStatement(sql);
6.给?赋值:
方法:setXxx(参数1,参数2)
参数1:?的位置编号 从1开始
参数2:?的值
7.执行sql,接受返回结果,不需要传递sql语句
8.处理结果
9.释放资源
5.注意:后期都会使用PreparedStatement对象来完成增删改查的所有操作
1.可以防止SQL注入
2.效率更高
登录方法,使用PreparedStatement实现: