image.png

    1. package com.itheima.jdbc;
    2. import org.junit.Test;
    3. import java.sql.*;
    4. /**
    5. * JDBC API 详情:Result
    6. */
    7. public class JDBCDemo7_PreparedStatement {
    8. @Test
    9. public void testPreparedStatement() throws Exception {
    10. // 2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化,(简化,就是端口号和ip不写)
    11. // 这里的127.0.0.1 可以写成localhost 不想要红色警告可以设置参数后面的键值对(前面加问号)
    12. // useSSL=false (Java的键值对是 键=值 这里不能有空格
    13. String url = "jdbc:mysql:///db1?useSSL=false"; // db1 是数据库名
    14. String userName = "root";
    15. String passWord = "123456";
    16. Connection connection = DriverManager.getConnection(url, userName, passWord);
    17. // 接收用户输入的 用户名和密码
    18. String name = "dfdsfsdf";
    19. String pwd = "' or '1' = '1";
    20. // 定义sql // 用户名和密码用?代替
    21. String sql = "select * from tb_user where username = ? and password = ?";
    22. // 获取pstmt对象
    23. PreparedStatement pstmt = connection.prepareStatement(sql);
    24. // 设置?号的值, 该问号是什么类型的值,就set什么
    25. pstmt.setString(1,name); // 第一个值写name变量
    26. pstmt.setString(2,pwd); // 第二个值写密码
    27. // 执行sql
    28. ResultSet rs = pstmt.executeQuery();
    29. // 判断是否登录成功: 使用ResultSet的next方法,先向下移动一行查看是否有效行
    30. if (rs.next()) {// 如果是有效行(代表有数据)
    31. System.out.println("登录成功");
    32. } else {
    33. System.out.println("登录失败");
    34. }
    35. // 7. 释放资源
    36. rs.close();
    37. pstmt.close();
    38. connection.close();
    39. //
    40. //
    41. //
    42. }
    43. }