- 1 为eclipse工程导入驱动jar包
我用的是oxygen,右键工程选择properties->Java Build Path 选择Libaraies ->Add External JARs 选择你的jar包点击ok
在Package Explorer 中查看自己工程Referenced Libaries中是否有导入jar包。
- 2 注册驱动,链接数据库进行操作,详见代码:
package demo1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.Random; import java.util.Scanner; public class Test { public static void main(String[] args) throws Exception { //有注入漏洞的方法 // jdbcDemo(); //使用PreparedStatement对象处理注入漏洞的方法 jdbcDemo1(); } private static void jdbcDemo1() throws Exception { /* * 使用PreparedStatement来避免出现注入漏洞 * 在控制台输入 xx'or 'a'='a 不会出现漏洞问题了 * */ //注册驱动 Class.forName("com.mysql.jdbc.Driver"); //获得链接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day29","root","Aa123456"); //测试是否有链接成功。 System.out.println(conn); Scanner scan = new Scanner(System.in); String name = scan.nextLine(); //有占位符的sql语句 String sql = "SELECT * FROM test WHERE name=?"; PreparedStatement prestat = conn.prepareStatement(sql); //第一个参数是占位符的位置 prestat.setString(1,name); //executeQuery方法已经不用在填入sql语句了,因为获得PreparedStatement对象的时候已经传入 ResultSet set = prestat.executeQuery(); while (set.next()) { System.out.println(set.getInt("id") + ":" + set.getString("name") + ":" + set.getInt("age")); } } private static void jdbcDemo() throws Exception { /* * 有注入漏洞的方法 * 注意要导的包都是java.sql下的子包 * 当用户输入生成一下sql语句时时就出现了漏洞,会返回所有的数据。 * 输入 xx'or 'a'='a * SELECT * FROM test WHERE name = 'xx' OR 'a'='a'; */ //注册驱动 Class.forName("com.mysql.jdbc.Driver"); //获得链接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day29","root","Aa123456"); //测试是否有链接成功。 System.out.println(conn); //获得Statement对象 Statement stat = conn.createStatement(); Random ran = new Random(); int ranInt = ran.nextInt(1000); // //insert update delete 语句都用 executeupdate方法执行 // String sql = "insert into test(name,age) values('test_user"+ ranInt +"', "+ranInt+")"; // System.out.println(sql); // //返回的是操作的行数 // int row = stat.executeUpdate(sql); // //查看结果 // System.out.println("操作了" + row + "行。"); String sql= null; // //漏洞测试代码 // Scanner scan = new Scanner(System.in); // String name = scan.nextLine(); // //在控制台输入 xx'or 'a'='a 后sql语句如下 // //select * from test where name='a'or 'a'='a',并且获得所有结果集 // sql = "select * from test where name='"+ name+"'"; // System.out.println(sql); // 正常的查询sql //查询SQL语句 sql = "select * from test"; //执行sql查询语句 ResultSet set = stat.executeQuery(sql); //查看结果 while(set.next()) {//检测是否还有结果 //输出结果 System.out.println(set.getInt("id") + ":" + set.getString("name") + ":" + set.getInt("age")); } //关闭资源 conn.close(); stat.close(); } }