zoukankan      html  css  js  c++  java
  • MySQL数据库 JDBC 有注入攻击bug

     
     
     
     
     
    JDBC对数据库表进行增删改查操作
    • 导入jar包
    • 注册驱动 告诉jvm 我们使用哪种驱动程序
    Class.forName("com.mysql.jdbc.Driver");
    • 获得连接对象 Connection
    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名称","用户名","密码")
    • 获得执行者对象 Statement用于执行SQL语句 把SQL语句发送到数据库执行 Statement state = conn.createStatement() 
    • 执行SQL语句 返回结果
    int row=state.executeUpdate(sql语句);----→增删改
    ResultSet rs=state.executeQuery(sql语句);----→查
    • 处理结果 (打印行数、遍历结果集)
    • 释放资源
     
     
     
    //封装一个工具类
    package cn.kgc.utils;
    import java.sql.*;
    public class UtilsJDBC {
        /**
             * 创建工具类 工具中的方法都是静态方法 方便直接通过类名调用
         * 定义四个静态成员变量 用于连接数据库的相关信息
         * 定义静态代码块 注册驱动
         * 定义一个静态方法获得Connection对象 并返回conn对象 遇到异常时需要把编译异常改为运行异常
         * 定义一个静态方法 释放资源
         */
        //1.定义四个静态成员变量 用于连接数据库的相关信息
      private static String driver="com.mysql.jdbc.Driver";
        private static String url="jdbc:mysql://localhost:3306/day03";
        private static String user="root";
        private static String password="123456";
        //2.静态代码块 优先执行 只执行一次
      //注册驱动
        static {
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        public static Connection getConnection(){
            Connection conn=null;
            try {
                conn=DriverManager.getConnection(url,user,password);
            } catch (SQLException e) {
                //如果数据连接失败 那么程序没有必要继续了
                //需要把编译异常改为运行异常
                throw new RuntimeException("获取数据库失败");
            }
            return conn;
        }
        //3.定义一个静态方法 释放资源
        public static void close(ResultSet rs, Statement state,Connection conn){
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (state!=null){
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
     
     
     
    //测试
    package cn.kgc.utils;
    import java.sql.Connection;
    public class Test {
        public static void main(String[] args) {
            Connection conn = UtilsJDBC.getConnection();
            System.out.println(conn);
        }
    }
     
     
    //操作
    package cn.kgc.utils;
    import org.junit.Test;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class JDBC {
        //添加数据
        @Test
        public void testInsert(){
            //1 2 注册驱动 获得连接
            Connection conn = UtilsJDBC.getConnection();
            //3 获得执行者对象
            Statement state=null;
            try {
                state = conn.createStatement();
                //4 执行SQL语句
                int row1 = state.executeUpdate("INSERT INTO products " +
                        "VALUES('p0012','华为',2999,'2',002),('p0013','华为p10',4000,'3',003)");
                int row2 = state.executeUpdate("DELETE FROM products WHERE pid='p003'");
                int row3 = state.executeUpdate("ALTER TABLE products CHANGE flag top VARCHAR(2)");
                //处理结果 (打印行数)
           System.out.println(row1+"行数据添加成功");
                System.out.println(row2+"行数据删除成功");
                System.out.println(row3+"行数据更改成功");
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                //关闭资源
                UtilsJDBC.close(null,state,conn);
            }
        }
    }
     
     
     
    //原生
    package cn.kgc.jdbc;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class Demo01JDBC {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //注册驱动 告诉jvm 我们使用哪种驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            //获得连接对象 Connection
            Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/day03","root","123456");
            System.out.println(connection);
            //获得执行者对象 Statement用于执行SQL语句 把SQL语句发送到数据库执行
            Statement statement = connection.createStatement();
            System.out.println(statement);
            //执行SQL语句 返回结果 增删改:int affected(受影响的)影响数据库的行数 查询:ResultSet结果集
            int row = statement.executeUpdate("INSERT INTO category(cname)VALUES ('化妆品'),('宠物用品'),('饮料');");
            System.out.println(row);
            //释放资源
            statement.close();
            connection.close();
        }
    }
     
     
     

  • 相关阅读:
    msgs no .h file
    我们为之奋斗过的C#之---简单的库存管理系统
    我们为之奋斗过的C#-----C#的一个简单理解
    套接字之sendto系统调用
    套接字之msghdr结构
    套接字之select系统调用
    套接字之close系统调用
    TCP之listen&backlog
    套接字之相关系统调用的调用流程
    套接字之shutdown系统调用
  • 原文地址:https://www.cnblogs.com/KiligYou/p/11018194.html
Copyright © 2011-2022 走看看