SQL增删改查、SQL注入、事务

原创 2017年10月13日 16:17:36

SQL注入:
SELECT * FROM user WHERE name=”abcd” and password=”“;
当password设置为1234” or “1”=”1”;
SELECT * FROM user WHERE name=”abcd” and password=”1234” or “1”=”1”;
所以在JDBC中,使用?替代参数

事务写法:

将获取到的连接的自动提交关闭就OK
Connection con=...;
con.setAutoConnit(false);
//操作完成之后再提交
con.commit;

JavaBean建立

public class Student {
    private Integer Id;
    private String Name;
    private Integer Cno;

    public Integer getId() {
        return Id;
    }

    public void setId(Integer id) {
        Id = id;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public Integer getCno() {
        return Cno;
    }

    public void setCno(Integer cno) {
        Cno = cno;
    }

    @Override
    public String toString() {
        return "Student [Id=" + Id + ", Name=" + Name + ", Cno=" + Cno + "]";
    }
}

数据库资源封装:

public class DataSource {
    public static final String DRIVER = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://192.168.216.3:3306/eclipse?useUnicode=true&characterEncoding=utf8";
    public static final String USER = "root";
    public static final String PASSWORD = "123456";
}
//我的数据库在虚拟机里,端口号和账号密码如上

增删改查封装:

public class jdbcutil {
    public static Connection getConnection() {
        Connection con = null;
        try {
            Class.forName(util.DataSource.DRIVER);
            con = DriverManager.getConnection(util.DataSource.URL, util.DataSource.USER, util.DataSource.PASSWORD);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }

    public static void closeAll(ResultSet rs, PreparedStatement pstmt, Connection con) {
        try {
            if (rs != null)
                rs.close();
            if (rs != null)
                pstmt.close();
            if (rs != null)
                con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static int executeUpdate(String sql, Object... params) {
        int result = 0;
        Connection con = getConnection();
        PreparedStatement pstmt = null;
        try {
            pstmt = con.prepareStatement(sql);
            if (params != null) {
                for (int i = 0; i < params.length; i++) {
                    pstmt.setObject(i + 1, params[i]);
                }
            }
            result = pstmt.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            util.jdbcutil.closeAll(null, pstmt, con);
        }
        return result;
    }

    public static <T> List<T> executeQuery(String sql, RowMap<T> rowmap, Object... params) {
        Connection con = getConnection();
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        List<T> result = new ArrayList<>();
        try {
            pstmt = con.prepareStatement(sql);
            if (params != null) {
                for (int i = 0; i < params.length; i++) {
                    pstmt.setObject(i + 1, params[i]);
                }
            }
            rs = pstmt.executeQuery();
            while (rs.next()) {
                T t = rowmap.RowMapping(rs);
                result.add(t);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            closeAll(rs, pstmt, con);
        }
        return result;
    }
}

接口定义:

public interface RowMap<T> {
    public T RowMapping(ResultSet rs);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

prepareStatement进行增删改查---填充占位符(防止sql注入)

首先创建表 然后构造一个实体类–封装数据库字段 Studentpackage com.godinsec;public class Student { private int id; ...

C# SQL数据库的基础增删改查和事务

刚学了C#中写SQL数据库的增删改查,只是最基础SQL语句使用,深入地等待学习中。 在操作数据库之前,要先下载SQL Server与C#连接使用,数据库的表都是放在SQL Server当中的,C#只是...

asp中实现sql事务登录_增删改查

web.config   有关如何配置 ASP.NET 应用程序的详细消息,请访问   http://go.microsoft.com/fwlink/?LinkId=169433   -...

PHP实现增删改查以及防SQL注入

  • 2014年07月12日 21:00
  • 34KB
  • 下载

MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

本文并非原创性的文章: 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4050825.h...

SQL语句增删改查

  • 2015年01月30日 19:43
  • 2KB
  • 下载

c#+sql增删改查

  • 2014年06月03日 21:49
  • 7KB
  • 下载

配置文件之属性文件,sql漏洞的原因,sql注入的解决办法和原理,preparedStatement的增删改查语句,

13  配置文件: 属性文件: 格式:扩展名是 .properties 内容: key = value   在工具类中获取文件 14  SQL漏洞的原因:  存在or关键字和 -- 注释 15  解决...

Sql语句增删改查

  • 2013年05月23日 16:50
  • 40KB
  • 下载

qiyuan asp开发 C# SQL2000 增删改查

  • 2008年10月15日 15:57
  • 19.1MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL增删改查、SQL注入、事务
举报原因:
原因补充:

(最多只允许输入30个字)