
sql注入: 由于下面的password = ‘’ 和username = ‘jdslfkjsd’,执行结果i为 false(密码不成立,查询不到),然后就会进行 ‘1’ = ‘1’ 结果为true 所以where 后面为true就执行
java -jar +jar包名 可以启动jar包 
在sql语句这里拼接字符串(有单引,有双引)很容易拼错, 可以先写两个双引号,然后再写两个 ++号, ➕中间写变量名
package com.itheima.jdbc;import com.itheima.pojo.Account;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;/*** JDBC API 详情:Result*/public class JDBCDemo6_UserLogin {@Testpublic void testResultSet() 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 = "zhangsan";String pwd = "123";String sql = "select * from tb_user where username = '"+ name +"' and password = '" + pwd +"'";// 获取stmt对象Statement stmt = connection.createStatement();// 执行sqlResultSet rs = stmt.executeQuery(sql);// 判断是否登录成功: 使用ResultSet的next方法,先向下移动一行查看是否有效行if (rs.next()){// 如果是有效行(代表有数据)System.out.println("登录成功");}else {System.out.println("登录失败");}// 7. 释放资源rs.close();stmt.close();connection.close();}/** 演示sql注入* inject 是注入的意思* @throws Exception*/@Testpublic void testtestLogin_inject() 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 = "z发士大夫";String pwd = "' or '1' = '1";String sql = "select * from tb_user where username = '"+ name +"' and password = '" + pwd +"'";// 获取stmt对象Statement stmt = connection.createStatement();// 执行sqlResultSet rs = stmt.executeQuery(sql);// 判断是否登录成功: 使用ResultSet的next方法,先向下移动一行查看是否有效行if (rs.next()){// 如果是有效行(代表有数据)System.out.println("登录成功");}else {System.out.println("登录失败");}// 7. 释放资源rs.close();stmt.close();connection.close();}}
