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();
}

}

sql注入及事务的更多相关文章

  1. 06 数据库入门学习-视图、sql注入、事务、存储过程

    一.视图 1.什么是视图 视图本质是一张虚拟的表 2.为什么要用 为了原表的安全 只要有两大功能 1.隐藏部分数据,开放指定数据 2.视图可以将查询结果保存,减少sql语句的次数 特点: 1.视图使用 ...

  2. Python 43 视图 、sql注入问题 、事务 、存储过程

    一:视图 1 视图是什么? 本质是一张虚拟的表,他的数据来自select语句 创建视图 create view test_view select *from t1; 2 有什么用? 原表安全 案例: ...

  3. JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务

    JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...

  4. python操作MySQL、事务、SQL注入问题

    python操作MySQL python中支持操作MySQl的模块很多 其中最常见就是'pymysql' # 属于第三方模块 pip3 install pymysql # 基本使用 import py ...

  5. python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数

    python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...

  6. 防御sql注入

    1. 领域驱动安全 领域驱动安全是一种代码设计方法.其思想是将一个隐式的概念转化为显示,个人认为即是面向对象的方法,将一个概念抽象成一个类,在该类中通过方法对类的属性进行约束.是否是字符串,包含什么字 ...

  7. 初探SQL注入

    1.1注入语句(通过时间注入函数) 数据库名称 localhost:8080/ScriptTest/userServlet?username='union SELECT IF(SUBSTRING(cu ...

  8. Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入?

    问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接 ...

  9. 预处理prepareStatement是怎么防止sql注入漏洞的?

    序,目前在对数据库进行操作之前,使用prepareStatement预编译,然后再根据通配符进行数据填值,是比较常见的做法,好处是提高执行效率,而且保证排除SQL注入漏洞. 一.prepareStat ...

随机推荐

  1. 《转》快速导出SSRS之RDL文件

    select name,[path],cast(cast(content AS varbinary(max)) as xml) as RDLDef from dbo.[Catalog] where t ...

  2. Scrum立会报告+燃尽图 07

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2289] 版本控制:https://git.coding.net/liuyy08 ...

  3. DbVisualizer 连接 SQL Server 2008配置

    软件准备 1.SQLServer驱动准备,可在该连接下载:https://pan.baidu.com/s/1i4V1Ivz (1). 解压JDBC for SQLServer drive.rar,得到 ...

  4. leetcode122 买卖股票的最佳时机 python

    题目:给定一个数组,它表示了一只股票的价格浮动,第i个元素代表的是股票第i天的价格.设计一个函数,计算出该股票的最大收益,注意,可以多次买入卖出,但下一次买入必须是在本次持有股票卖出之后.比如[1,7 ...

  5. 利用U盘大白菜软件来重装win7系统

    个人装win7系统用了两个U盘,一个做启动盘(FAT32格式),另外一个当做系统盘(NTFS格式). 首先在电脑里面下载一个大白菜软件,并且安装好,打开软件,插上U盘,检测到了该U盘即可一键制作启动盘 ...

  6. bzoj 4177 Mike的农场

    bzoj 4177 Mike的农场 思维有些江化了,一上来就想费用流做法,但其实就是个最小割啊. 考虑先将所有的收益拿到,再减去不能拿的以及三元组 \((i,j,k)\) 产生的代价.即,先让 \(a ...

  7. StringUtils的工具类isBlank与isEmply

    1. public static boolean isEmpty(String str)   判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0   下面是 S ...

  8. VMware ESXi 网卡

    esxcfg-vswitch -A "VMkernel09" vswitch0 esxcfg-vmknic -a "VMkernel09" -i 172.10. ...

  9. 2018-2019学年第一学期Java课程设计

    目录 Magic-Towers 一.团队课程设计博客链接   [团队博客地址](https://www.cnblogs.com/lmb171004/p/10271667.html 二.个人负责模块或任 ...

  10. 基于nginx-rtmp-module模块实现的HTTP-FLV直播模块(nginx-http-flv-module)

    本文后续的内容将在这里更新:<基于nginx-rtmp-module模块实现的HTTP-FLV直播模块(nginx-http-flv-module)续>.注意:下文的配置很多已经不能用了, ...