jdbc加强练习.docx
文本预览下载声明
就业班课程回顾:XMLXML技术 (2天)--》写XML--》读XML第二部分:JavaWeb开发Servlet / JSP 相关接口:HttpServletRequest/response/ServletContext/HttpSession…….第三部分:数据库MySQL数据库第四部分:JDBCJDBC技术: java数据库连接技术!接口:Connection: 连接对象Statement: 执行命令对象: 把SQL语句发送到数据库执行ResultSet: (在线式)结果集接口, 必须要保持与数据库的连接!开发步骤:建项目,引入数据库驱动包加载驱动Class.forName(..);获取连接对象创建执行sql语句的stmt对象; 写sql执行sql更新 delete/insert/updateexecuteUpdate(); 查询 selectexecuteQuery();关闭/异常目标:预编译sql处理(防止sql注入)批处理插入数据,获取自增长值事务Jdbc中大文本类型的处理Jdbc综合练习明天/后天:Jdbc技术优化、DbUtils组件、分页、连接池预编译sql处理(防止sql注入)-- 创建数据库CREATE DATABASE jdbc_demo DEFAULT CHARACTER SET utf8;i-- 创建表USE jdbc_demo;CREATE TABLE admin( id INT PRIMARY KEY AUTO_INCREMENT, userName VARCHAR(20), pwd VARCHAR(20))|--Statement执行SQL命令|-- CallableStatement,执行存储过程|-- PreparedStatement预编译SQL语句执行使用预编译SQL语句的命令对象,好处:避免了频繁sql拼接 (可以使用占位符)可以防止sql注入登陆模块,输入用户名,密码!注意,要避免用户输入的恶意密码!publicclass App {// 连接参数//private String url = jdbc:mysql://localhost:3306/jdbc_demo;private String url = jdbc:mysql:///jdbc_demo;private String user = root;private String password = root;private Connection con;private Statement stmt;private PreparedStatement pstmt;private ResultSet rs;// 1. 没有使用防止sql注入的案例@Testpublicvoid testLogin() {// 1.0 模拟登陆的用户名,密码String userName = tom;//String pwd = 8881;String pwd = or 1=1 -- ;// SQL语句String sql = select * from admin where userName=+userName+ and pwd=+pwd+ ;System.out.println(sql);try {// 1.1 加载驱动,创建连接Class.forName(com.mysql.jdbc.Driver);con = DriverManager.getConnection(url, user, password);// 1.2 创建stmt对象stmt = con.createStatement();// 1.3 执行查询rs = stmt.executeQuery(sql);// 业务判断if (rs.next()) {System.out.println(登陆成功, 编号: + rs.getInt(id));}} catch (Exception e) {e.printStackTrace();} finally {// 1.4 关闭try {rs.close();stmt.close();con.close();} catch (Exception e) {e.printStackTrace();}}}// 2. 使用PreparedStatement, 防止sql注入@Testpublicvoid testLogin2() {// 1.0 模拟登陆的用户名,密码String userName = tom;//String pwd = 8881;String pwd = or 1=1 -- ;// SQL语句String sql = select * from admin w
显示全部