PrepareStatement对象(新增、删除、更新、查询、防止SQL注入)
MySQL三十三:PrepareStatement对象
PrepareStatement 可以防止SQL注入,并且效率高!
1、新增
package lesson03;import lesson02.utils.JdbcUtils;import java.sql.*;public class TestInsert {public static void main(String[] args) {Connection conn =null;PreparedStatement st=null;ResultSet rs=null;try {// Connection connection = JdbcUtils.getConnection();conn = JdbcUtils.getConnection();//PreparedStatement preparedStatement = conn.prepareStatement();//使用?占位符代替参数String sql="insert into users (id,`name`,`password`,`email`,`birthday`) values(?,?,?,?,?)";st = conn.prepareStatement(sql); //预编译SQL,先写sql,然后不执行//手动给参数赋值st.setInt(1,4); //idst.setString(2,"xiaoliu");st.setString(3,"123456");st.setString(4,"30666864@qq.com");// 注意点 sql.Date 数据库 java.sql.Date()// util.Date JAVA new Date().getTime()st.setDate(5,new java.sql.Date(new java.util.Date().getTime()));//执行int i = st.executeUpdate();if (i>0){System.out.println("插入成功!!!");}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JdbcUtils.release(conn,st,rs);}}
}
2、删除
package lesson03;import lesson02.utils.JdbcUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class TestDelete {public static void main(String[] args) {Connection conn =null;PreparedStatement st=null;ResultSet rs=null;try {// Connection connection = JdbcUtils.getConnection();conn = JdbcUtils.getConnection();//PreparedStatement preparedStatement = conn.prepareStatement();//使用?占位符代替参数String sql="DELETE FROM users WHERE id=?";st = conn.prepareStatement(sql); //预编译SQL,先写sql,然后不执行//手动给参数赋值st.setInt(1,4);//执行int i = st.executeUpdate();if (i>0){System.out.println("删除成功!!!");}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JdbcUtils.release(conn,st,rs);}}
}
3、更新
package lesson03;import lesson02.utils.JdbcUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class TestUpdate {public static void main(String[] args) {Connection conn =null;PreparedStatement st=null;ResultSet rs=null;try {// Connection connection = JdbcUtils.getConnection();conn = JdbcUtils.getConnection();//PreparedStatement preparedStatement = conn.prepareStatement();//使用?占位符代替参数String sql="update users set `name`=? where id=?";st = conn.prepareStatement(sql); //预编译SQL,先写sql,然后不执行//手动给参数赋值st.setString(1,"王五");st.setInt(2,2);//执行int i = st.executeUpdate();if (i>0){System.out.println("更新成功!!!");}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JdbcUtils.release(conn,st,rs);}}
}
4、查询
package lesson03;import lesson02.utils.JdbcUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class TestSelect {public static void main(String[] args) {Connection conn =null;PreparedStatement st=null;ResultSet rs=null;try {// Connection connection = JdbcUtils.getConnection();conn = JdbcUtils.getConnection();//PreparedStatement preparedStatement = conn.prepareStatement();//使用?占位符代替参数String sql="select * from users where id=?";st = conn.prepareStatement(sql); //预编译SQL,先写sql,然后不执行//手动给参数赋值st.setInt(1,1);rs=st.executeQuery(); //执行if (rs.next()){System.out.println(rs.getString("name"));}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JdbcUtils.release(conn,st,rs);}}
}
5、防止SQL注入
package lesson02.utils;import java.sql.*;public class SQL注入 {public static void main(String[] args) {//login("xiaochen","123456"); //正常登陆 正常输出//login("'or'1=1 ","'or'1=1"); //不正常输出,结果是全部用户名和密码login("xiaochen","123456");}public static void login(String username,String password){Connection conn=null;PreparedStatement st=null;ResultSet rs=null;try {conn = JdbcUtils.getConnection(); //获取数据连接//prepareStatement 防止SQL 注入的本质 把传递进来的参数当作字符// 假设其中存在转义字符,直接忽略 如'' 会直接被转义掉String sql="select * from users where `name`=? and `password` =?";st=conn.prepareStatement(sql);st.setString(1,username);st.setString(1,password);rs=st.executeQuery();while(rs.next()){System.out.println(rs.getString("name"));System.out.println(rs.getString("password"));System.out.println("=======================");}} catch (SQLException throwables) {throwables.printStackTrace();}finally {JdbcUtils.release(conn,st,rs);}}
}
PrepareStatement对象(新增、删除、更新、查询、防止SQL注入)相关推荐
- mybaits的模糊查询_mybatis模糊查询防止SQL注入(很详细)
SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如"or '1'='1'"这样的语句),有可能入侵参数检验不足的应用程序 ...
- 自己总结的hql新增、删除、查询与sql的新增、删除、查询区别
一.当保存的是Hibernate 对象的时候: /*** @功能描述 保存或者修改收文记录* @param main void*/@SuppressWarnings("unchecked&q ...
- ORACLE 数据同步时,批量进行新增和更新操作的SQL写法
场景模拟:比如自己项目的一张EMP员工信息表,数据来源需要从第三方系统获取,随时可手动同步更新,也可以定时自动同步.一般情况下,通过创建时间或者最后更新时间,获取自上次同步后的数据增量,全部插入本地的 ...
- ADO.NET笔记——带参数的查询防止SQL注入攻击
相关知识: 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成"参数" SQLCommand支持带参数的查询,也就是说,可以 ...
- Android学习笔记----SQLiteDatabase 自带添加、删除、更新、查询的操作方法:实现添加,删除,更新,查询,和分页,统计
7.除了前面给大家介绍的execSQL()和rawQuery()方法, SQLiteDatabase还专门提供了对应 于添加.删除.更新.查询的操作方法: insert().delete().upda ...
- SQL注入问题及预防方法
SQL注入问题 sql存在漏洞,会被攻击导致数据泄露 SQL会被拼接 or package com.kuang.lesson02; import com.kuang.lesson02.utils.jd ...
- 更新sql语句 sql注入_SQL更新语句– SQL中的更新查询
更新sql语句 sql注入 SQL Update Statement or Update Query in SQL is used to modify the column data in table ...
- B站小迪安全笔记第十六天-SQL注入之查询方式及报错盲注
前言: 当进行 SQL 注入时,有很多注入会出现无回显的情况,其中不回显 的原因可能是 SQL 语句查询方式的问题导致,这个时候我们需要用到相 关的报错或盲注进行后续操作,同时作为手工注入时,同时作为 ...
- ACCESS在程序运行中实时更新查询列表的条件
最近抽时间在帮其它部门处理数据,使用ACCESS处理数据,里面有个需求,需要在运行时动态的更改一个查询的条件(也就是更新SQL语句内容).之前简单的想法是像更改报表一样的更改查询条件. 报表的格式可以 ...
- mysql注入模糊_sql模糊查询,以及sql注入问题
mysql 模糊查询 与 sql注入 一.根据姓名模糊查询员工信息 方式一 select id, emp_name as empName, sex,email,birthday,address fro ...
最新文章
- 活动目录在构建核心过程中的八个关键点(下)
- h264中profile和level的含义
- H.264 RTP payload 格式
- 第2章 一切都是对象
- HDU 2896 病毒侵袭【AC自动机】
- 来了解下计算机视觉的八大应用
- org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
- Sybase常见问题
- 在TOC中添加右键查看属性信息菜单
- photoshop的页面制作练习2
- Java基础入门(八)之面向对象二
- 微信小程序开发之——WeUI快速上手
- 我的awk常用命令备忘 xargs备忘
- Linux系统编译安装GDAL库
- 麒麟系统云打印安装指导
- IIS配置php+soap
- ETL工程师的岗位详情岗位职责
- 六张图,看懂前瞻性数据分析,该如何做
- MyBatis之Base64加密数据源
- 国内疫情数据可视化平台