zoukankan      html  css  js  c++  java
  • sql注入及事务

    Statement会有一个关于sql注入的bug ,所以基本不使用

    一般使用PreparedStatement


    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;

    import com.huawei.utils.DBUtil;

    public class TestJDBC02 {

    public static void testPreparedStatement() throws Exception{

    /**
    * 预处理sql语句 不会出现sql注入的bug
    */
    Connection connection = DBUtil.getConnection();

    String sql = "select * from users where username=?";
    //得到sql语句的 预处理对象
    PreparedStatement preparedStatement = connection.prepareStatement(sql);

    preparedStatement.setObject(1, "admin1' or 1=1 or username='");

    ResultSet rs = preparedStatement.executeQuery();

    while(rs.next()){
    System.out.println(rs.getObject(1));
    }

    DBUtil.close(rs,preparedStatement,connection);

    }


    public static void testTransaction() throws Exception{
    Connection connection = DBUtil.getConnection();
    //默认 事务是自动提交的
    //要达到手动提交的目的 必须关闭 自动提交
    connection.setAutoCommit(false);
    PreparedStatement ps = null;
    PreparedStatement ps1 = null;
    try{
    ps = connection.prepareStatement("insert into A (a) values ('lisi21')");
    ps1 = connection.prepareStatement("insert into B (b) values ('lisi123')");
    ps.executeUpdate();
    ps1.executeUpdate();
    //执行完成以后 提交到数据库
    connection.commit();

    }catch (Exception e) {
    //如果产生任何的错误 则回滚
    connection.rollback();
    e.printStackTrace();
    }
    DBUtil.close(ps,ps1,connection);
    }


    public static void main(String[] args) throws Exception {
    testTransaction();
    }


    }

  • 相关阅读:
    Wampserver主机服务配置方法
    工作记录
    Shell教程
    简单教程
    java笔记
    四轴飞行器
    ace文档
    马尔科夫模型参考
    电子书搜索
    免费电子书
  • 原文地址:https://www.cnblogs.com/hwgok/p/5814453.html
Copyright © 2011-2022 走看看