• JDBC+SQL注入


    2019-12-03

    10:17:31

    参考:https://www.bilibili.com/video/av48765872?p=332

    package com.wkcto.jbdc.test2;
    import java.sql.*;
    public class JdbcDemo2 {
        public static void test1() {
            Connection conn =null;
            Statement stat = null;
            String url = null; 
            String sql = null;
            ResultSet res = null; 
            try {
                //1.注册驱动,也就是让JVM可以识别Mysql的数据驱动
                //Driver是Sun公司制定的接口,com.mysql.jdbc.Driver是Mysql公司对Driver接口的实现
                Driver driver = new com.mysql.jdbc. Driver();
                DriverManager.registerDriver(driver);
                //2.获取和数据库的连接对象
                //(1)我们写的java程序实际上就是数据库服务器的一个客户端
                String user = "root";
                String password = "";
                url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                sql = "select * from student;";//sql末尾分号可有可无
                //执行DQL语句,返回查询结果集对象
                //JDBC中把查询结果集封装成ResultSet接口
                res = stat.executeQuery(sql);
                //遍历结果集:结果集中有个类似集合迭代器的东西
                while(res.next()) {
                    int empno1 = res.getInt("sid");
                    String ename = res.getString("sname");
                    java.sql.Date hiredate = res.getDate("sage");
                    String ssex = res.getString("ssex");
                    System.out.println(empno1+","+ename+","+hiredate+","
                            +ssex+" ");
                }
                
        
                }
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                //6.关闭数据库中的相关对象
                try {
                    if(res != null) {
                        res.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        public static void main(String[] args) {
            test1();
        }
    
    }

    可以看出与数据库中显示的结果一样。

     


     

     

    package com.wkcto.jbdc.test2;
    import java.sql.*;
    public class JdbcDemo2 {
        public static void test1() {
            Connection conn =null;
            Statement stat = null;
            String url = null; 
            String sql = null;
            ResultSet res = null; 
            try {
                //1.注册驱动,也就是让JVM可以识别Mysql的数据驱动
                //Driver是Sun公司制定的接口,com.mysql.jdbc.Driver是Mysql公司对Driver接口的实现
                Driver driver = new com.mysql.jdbc. Driver();
                DriverManager.registerDriver(driver);
                //2.获取和数据库的连接对象
                //(1)我们写的java程序实际上就是数据库服务器的一个客户端
                String user = "root";
                String password = "";
                url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                sql = "select * from student;";//sql末尾分号可有可无
                //执行DQL语句,返回查询结果集对象
                //JDBC中把查询结果集封装成ResultSet接口
                res = stat.executeQuery(sql);
                //遍历结果集:结果集中有个类似集合迭代器的东西
                while(res.next()) {
                    int empno1 = res.getInt("sid");
                    String ename = res.getString("sname");
                    java.sql.Date hiredate = res.getDate("sage");
                    String ssex = res.getString("ssex");
                    System.out.println(empno1+","+ename+","+hiredate+","
                            +ssex+" ");
                }
                
        
                }
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                //6.关闭数据库中的相关对象
                //关于异常处理:在处理异常时什么时候合着处理,什么时候分着处理
                try {
                    if(res != null) {
                        res.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        public static void test2() {
            Connection conn = null;
            Statement stat = null; 
            try {
                Driver driver = new com.mysql.jdbc.Driver();
                DriverManager.registerDriver(driver);
                String user = "root";
                String password = "";
                String url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                //准备DML语句,执行DML语句的时候,数据库返回更新计数器
                String sql = "insert into student values(9,'张三','1999-08-26','男');";
                int i = stat.executeUpdate(sql);
                System.out.println("更新计数器i = " + i);
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        public static void main(String[] args) {
            test2();
        }
    
    }

     

    package com.wkcto.jbdc.test2;
    import java.sql.*;
    public class JdbcDemo2 {
        public static void test1() {
            Connection conn =null;
            Statement stat = null;
            String url = null; 
            String sql = null;
            ResultSet res = null; 
            try {
                //1.注册驱动,也就是让JVM可以识别Mysql的数据驱动
                //Driver是Sun公司制定的接口,com.mysql.jdbc.Driver是Mysql公司对Driver接口的实现
                Driver driver = new com.mysql.jdbc. Driver();
                DriverManager.registerDriver(driver);
                //2.获取和数据库的连接对象
                //(1)我们写的java程序实际上就是数据库服务器的一个客户端
                String user = "root";
                String password = "";
                url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                sql = "select * from student;";//sql末尾分号可有可无
                //执行DQL语句,返回查询结果集对象
                //JDBC中把查询结果集封装成ResultSet接口
                res = stat.executeQuery(sql);
                //遍历结果集:结果集中有个类似集合迭代器的东西
                while(res.next()) {
                    int empno1 = res.getInt("sid");
                    String ename = res.getString("sname");
                    java.sql.Date hiredate = res.getDate("sage");
                    String ssex = res.getString("ssex");
                    System.out.println(empno1+","+ename+","+hiredate+","
                            +ssex+" ");
                }
                
        
                }
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                //6.关闭数据库中的相关对象
                //关于异常处理:在处理异常时什么时候合着处理,什么时候分着处理
                try {
                    if(res != null) {
                        res.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        public static void test2() {
            Connection conn = null;
            Statement stat = null; 
            try {
                Driver driver = new com.mysql.jdbc.Driver();
                DriverManager.registerDriver(driver);
                String user = "root";
                String password = "";
                String url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                //准备DML语句,执行DML语句的时候,数据库返回更新计数器
                /*String sql = "insert into student values(9,'张三','1999-08-26','男');";
                int i = stat.executeUpdate(sql);
                System.out.println("更新计数器i = " + i);*/
                //准备DDL语句,执行DDL语句时,数据库返回0
                String sql = "CREATE TABLE USERS(ID INT (4) PRIMARY KEY,NAME VARCHAR(10),PASSWORD VARCHAR(10));";
                int i = stat.executeUpdate(sql);
                System.out.println("更新计数器i = " + i);
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        public static void main(String[] args) {
            test2();
        }
    
    }

    可以看出建立了users表

     

    使用execute()方法执行DML/DQL/DDL语句:

    package com.wkcto.jbdc.test2;
    import java.sql.*;
    public class JdbcDemo2 {
        public static void test1() {
            Connection conn =null;
            Statement stat = null;
            String url = null; 
            String sql = null;
            ResultSet res = null; 
            try {
                //1.注册驱动,也就是让JVM可以识别Mysql的数据驱动
                //Driver是Sun公司制定的接口,com.mysql.jdbc.Driver是Mysql公司对Driver接口的实现
                Driver driver = new com.mysql.jdbc. Driver();
                DriverManager.registerDriver(driver);
                //2.获取和数据库的连接对象
                //(1)我们写的java程序实际上就是数据库服务器的一个客户端
                String user = "root";
                String password = "";
                url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                sql = "select * from student;";//sql末尾分号可有可无
                //执行DQL语句,返回查询结果集对象
                //JDBC中把查询结果集封装成ResultSet接口
                res = stat.executeQuery(sql);
                //遍历结果集:结果集中有个类似集合迭代器的东西
                while(res.next()) {
                    int empno1 = res.getInt("sid");
                    String ename = res.getString("sname");
                    java.sql.Date hiredate = res.getDate("sage");
                    String ssex = res.getString("ssex");
                    System.out.println(empno1+","+ename+","+hiredate+","
                            +ssex+" ");
                }
                
        
                }
            catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                //6.关闭数据库中的相关对象
                //关于异常处理:在处理异常时什么时候合着处理,什么时候分着处理
                try {
                    if(res != null) {
                        res.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        public static void test2() {
            Connection conn = null;
            Statement stat = null; 
            try {
                Driver driver = new com.mysql.jdbc.Driver();
                DriverManager.registerDriver(driver);
                String user = "root";
                String password = "";
                String url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                //准备DML语句,执行DML语句的时候,数据库返回更新计数器
                /*String sql = "insert into student values(9,'张三','1999-08-26','男');";
                int i = stat.executeUpdate(sql);
                System.out.println("更新计数器i = " + i);*/
                //准备DDL语句,执行DDL语句时,数据库返回0
                String sql = "CREATE TABLE USERS(ID INT (4) PRIMARY KEY,NAME VARCHAR(10),PASSWORD VARCHAR(10));";
                int i = stat.executeUpdate(sql);
                System.out.println("更新计数器i = " + i);
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        //调用Statement 上的 execute()执行DQL/DML/DDL语句
        public static void test3() {
            Connection conn =null;
            Statement stat = null;
            ResultSet res = null; 
            try {
                Driver driver = new com.mysql.jdbc.Driver();
                DriverManager.registerDriver(driver);
                String user = "root";
                String password = "";
                String url = "jdbc:mysql://localhost:3306/test2";
                conn = DriverManager.getConnection(url,user,password);
                stat = conn.createStatement();
                //调用execute()执行DQL语句
                String sql = "select * from student;";
                //如果语句执行的结果是Result函数,则stat。execute()返回true
                if(stat.execute(sql)) {
                    //使用方法getResultSet取得结果集
                    res = stat.getResultSet();
                    while(res.next()) {
                        int empno1 = res.getInt("sid");
                        String ename = res.getString("sname");
                        java.sql.Date hiredate = res.getDate("sage");
                        String ssex = res.getString("ssex");
                        System.out.println(empno1+","+ename+","+hiredate+","
                                +ssex+" ");
                    }
                }
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(res != null) {
                        res.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(stat != null) {
                        stat.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        public static void main(String[] args) {
            test3();
        }
    
    }

     


    注册驱动的不同方式

    package com.wkcto.jbdc.test3;
    import java.sql.*;
    /*
     * JDBC编程的的时候需要注册驱动,注册驱动的目的是为了让JVM可以识别数据库的驱动
     * 可以使用不同的方式来注册驱动,如果驱动注册成功,就可以获取到连接对象,我们通过能否获取连接对象来检查驱动是否注册成功
     */
    public class JdbcDemo3 {
        public static void test1() {
            //方式1:com.mysql.jdbc.Driver这个类就是Mysql的数据库驱动类,我们创建这个类的对象的时候
            //JVM吧这个类加载到内存中,这样JVM就可以识别数据库的驱动了
            Connection conn = null;
            try {
                Driver driver = new com.mysql.jdbc.Driver();
                DriverManager.registerDriver(driver);
                String user = "root";
                String password = "";
                String url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                System.out.println("获取连接成功");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            test1();
    
        }
    
    }

    package com.wkcto.jbdc.test3;
    import java.sql.*;
    /*
     * JDBC编程的的时候需要注册驱动,注册驱动的目的是为了让JVM可以识别数据库的驱动
     * 可以使用不同的方式来注册驱动,如果驱动注册成功,就可以获取到连接对象,我们通过能否获取连接对象来检查驱动是否注册成功
     */
    public class JdbcDemo3 {
        public static void test1() {
            //方式1:com.mysql.jdbc.Driver这个类就是Mysql的数据库驱动类,我们创建这个类的对象的时候
            //JVM吧这个类加载到内存中,这样JVM就可以识别数据库的驱动了
            //方式2:省略DriverManager.registerDriver(driver);
            //方式3:利用反射
            
            Connection conn = null;
            try {
                //Driver driver = new com.mysql.jdbc.Driver();
                //DriverManager.registerDriver(driver);
                String className = "com.mysql.jdbc.Driver";
                Class.forName(className);
                String user = "root";
                String password = "";
                String url = "jdbc:mysql://localhost:3306/test2";
                //3.获取和数
                conn = DriverManager.getConnection(url,user,password);
                System.out.println("获取连接成功");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace(); 
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            test1();
    
        }
    
    }

     

     

  • 相关阅读:
    WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法
    SQL Server 触发器
    JS数据类型转换
    .net注册到IIS
    SQL Server 常用sql操作语句
    浅解DLL
    有关注册表API函数
    [原]惜 时
    图解双机共享ADSL上网
    如何在C#中使用全局鼠标、键盘Hook
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/11975981.html
Copyright © 2020-2023  润新知