zoukankan      html  css  js  c++  java
  • JDBC_mysql---防sql注入,存储图片

    package PreparedStatement_sql注入;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.Scanner;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    public class PreparedStatement_sql {
        // 用?作为占位符号
    
        /**
         * 保存图片mysql中用longblob
         * @throws Exception
         */
    @Test
    public void saveImg() throws Exception{
        String sql = "insert into stud values(66,?,?)";
        PreparedStatement pst = con.prepareStatement(sql);
        //声明图片的信息
        File file = new File("./img/a.jpg");
        InputStream in = new FileInputStream(file);
        //设置参数到pst中
        pst.setString(1, "ss");
        pst.setBinaryStream(2,in);
        //执行
        pst.executeUpdate();
    }
    
    
    
        /**
         * 防止sql注入
         * 
         * @throws Exception
         */
        @Test
        public void regWithPre() throws Exception {
    
            Scanner sc = new Scanner(System.in);
            System.err.println("输入id ,name");
            String id = sc.nextLine();
            String name = sc.nextLine();
            String sql = "insert into stud values(?,?)";
            // preparedstatement pst 接收sql
            // 执行sql语句再设置参数
            PreparedStatement pst = con.prepareStatement(sql);
            // 编译好后设置参数
            // 设置值要从1开始
            pst.setString(1, id);
            pst.setString(2, name);
            pst.executeUpdate();
    
        }
    
        /**
         * 判断数据库里是否有值
         * 
         * @throws Exception
         */
        @Test
        public void loginPst() throws Exception {
            Scanner sc = new Scanner(System.in);
            String nm = sc.nextLine();
            String id = sc.nextLine();
            String sql = "select * from stud where id=?  and name=?";
            PreparedStatement pst = con.prepareStatement(sql);
            pst.setString(1, id);
            pst.setString(2, nm);
            System.err.println(sql);
            ResultSet rs = pst.executeQuery();// 判断是否有值
            if (rs.next()) {
                System.err.println("你登录成功,你好欢迎你..");
            } else {
                System.err.println("你登录不成功。。。");
            }
        }
    
        @Before
        // 执行Test前执行
        public void getCon() throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=utf8";
            con = DriverManager.getConnection(url, "root", "1234");
            // con.close();
            // System.err.println(con);
    
        }
    
        @After
        // 执行Test后执行
        public void closeConn() throws Exception {
            if (con != null || !con.isClosed()) {
    
                con.close();
            }
    
        }
    
        private Connection con;
    
    }
  • 相关阅读:
    搭建自己的博客(四):优化首页和详情页
    搭建自己的博客(三):简单搭建首页和详情页
    搭建自己的博客(二):创建表,创建超级用户
    搭建自己的博客(一):前期准备
    linux系列(五):rm命令
    linux系列(四):mkdir命令
    linux系列(三):pwd命令
    Statically Linking freeglut
    ffmpeg 版本升级到 4.0 增加 libaom 库 [AOMedia 的 AV1 视频编码格式]
    FFmpeg configure: rename cuda to ffnvcodec 2018-03-06
  • 原文地址:https://www.cnblogs.com/xiaweifeng/p/3688797.html
Copyright © 2011-2022 走看看