使用JDBCUtils工具来完成小练习

题目:

练习:
    ①通过键盘录入用户名和密码
    ②判断用户是否登录成功

 方法1:

import util.JDBCUtils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class JDBCDemo2 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.next();
        System.out.println("请输入密码:");
        String password = sc.next();
        boolean flag = new JDBCDemo2().loginFun(username, password);
        if(flag){
            System.out.println("登录成功!");
        }else {
            System.out.println("您的用户名和密码有误!");
        }
    }

    public boolean loginFun(String username,String password){
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        //1.注册驱动
        //把工具类加载进来,就会执行静态代码,使用数据库连接
        try {
            //2.获取连接数据库对象Connection
            conn = JDBCUtils.getConnection();
            //3.准备好sql
            String sql = "select * from user where username='"+username+"' and password='"+password+"'";
            //4.获取执行sql的对象
            stmt = conn.createStatement();
            //5.执行sql
            rs = stmt.executeQuery(sql);
            //6.处理结果
            return rs.next();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.close(rs,stmt,conn);
        }
        return false;
    }
}

方法2:

import util.JDBCUtils;

import java.sql.*;
import java.util.Scanner;

public class JDBCDemo3 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.next();
        System.out.println("请输入密码:");
        String password = sc.next();
        boolean flag = new JDBCDemo2().loginFun(username, password);
        if(flag){
            System.out.println("登录成功!");
        }else {
            System.out.println("您的用户名和密码有误!");
        }
    }

    public boolean loginFun(String username,String password){
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        //1.注册驱动
        //把工具类加载进来,就会执行静态代码,使用数据库连接
        try {
            //2.获取连接数据库对象Connection
            conn = JDBCUtils.getConnection();
            //3.准备好sql,使用了?这个占位符
            String sql = "select * from user where username= ? and password= ? ";
            //4.获取执行sql的对象
            pstmt = conn.prepareStatement(sql);
            //给?赋值的操作
            pstmt.setString(1,username);
            pstmt.setString(2,password);
            //5.执行sql
            rs = pstmt.executeQuery(sql);
            //6.处理结果
            return rs.next();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.close(rs,pstmt,conn);
        }
        return false;
    }
}

结论:

    (1)SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全问题
    (2)解决sql注入问题:使用PreparedStatement对象来解决
    (3)预编译的sql:参数使用?作为占位符
    (4)步骤:
        (1)导入驱动jar包
            ①复制jar到项目的libs(自己建立方便管理)文件夹里
            ②右键,点击Add as Library
        (2)注册驱动
        (3)获取数据库连接对象 Connection
        (4)定义sql
            ①注意:sql的参数使用?作为占位符。
            ②比如:select * from user where username = ? and password = ?;
        (5)获取执行sql语句的对象 PreparedStatement Connection.preparedStatement(String sql)
        不同点:给?赋值
            * 方法:setXxx(参数1,参数2)
                参数1:问号的编号,从1开始
                参数2:?的值
        (6)执行sql,接收返回结果
        (7)处理结果
        (8)释放资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值