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