Statement接口

用于执行静态SQL语句并返回它所生成结果的对象

三种Statem类

Statement:由createStatement创建,用于发送简单的SQL语句(不带参数的),会有SQL注入的风险

PreparedStatement:继承自Statement接口,由prepareStatement创建,用于发送含有一个或多个输入参数的sql语句。PreparedStatement对象比Statement对象的效率高,并且可以防止SQL注入

CallableStatement:继承自PreparedStatement,由方法prePareCall创建,用于调用存储过程

常用方法Statement方法:

execute():运行语句,返回是否由结果集

executeQuery():运行select语句,返回ResultSet结果集

executeUpdate():运行insert/update/delete操作,返回更新的行数

测试Statement及SQL注入

try {
Class.forName("com.mysql.cj.jdbc.Driver");
//建立连接:非常耗时,真正开发中使用连接池管理连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc?&useSSL=false&serverTimezone=UTC"
,"root","***");
Statement sts=conn.createStatement();
// String sql="insert into t_user (username,pwd,regTime) values ('赵六',666666,now())";
// sts.execute(sql);
//测试SQL注入
String id="5 or 1=1";
String sql="delete from t_user where id="+id;
sts.execute(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

JDBC03 Statement接口的更多相关文章

  1. jdbc执行Statement接口的步骤

    jdbc执行Statement接口的步骤如下: 1)驱动注册程序: Class.forName(com.mysql.jdbc.Driver); 2)获取连接对象: Connection conn = ...

  2. jdbc java数据库连接 3)Statement接口之执行DDL、DML、DQL

    |- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql)  : 执行静态的更新sql语句(DDL,DML) |- ResultSet ...

  3. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别

    Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...

  4. MyBatis 源码分析——生成Statement接口实例

    JDBC的知识对于JAVA开发人员来讲在简单不过的知识了.PreparedStatement的作用更是胸有成竹.我们最常见用到有俩个方法:executeQuery方法和executeUpdate方法. ...

  5. 详解连接SQL Server数据库的方法,并使用Statement接口实现对数据库的增删改操作

    总结一下,连接SQL Server数据库需要以下几个步骤: 1. 导入驱动Jar包:sqljdbc.jar 2. 加载并注册驱动程序 3. 设置连接路径 4. 加载并注册驱动 5. 连接数据库 6. ...

  6. JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之间的区别

    Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...

  7. Statement 接口的应用(存在sql语句的注入风险)

    实现简单的登录功能 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; impo ...

  8. 使用Statement接口实现增,删,改操作(工作中不常用这个,而用PreparedStatement接口)

    一.Statement接口 作用:用于执行静态 SQL 语句并返回它所生成结果的对象. 1. 创建数据库连接类及相册实体,代码如下: package com.learn.jdbc.util; impo ...

  9. 增删改查——Statement接口

    1.增加数据表中的元组 package pers.datebase.zsgc; import java.sql.Connection; import java.sql.DriverManager; i ...

随机推荐

  1. windows编译动态链接库,dll+lib的形式

    之前一直在linux上做开发,没怎么关注过windows上如何编译动态链接库.不过一直存疑,为什么windows上的动态链接库是.dll配合.lib使用的,这个又是怎么生成的呢,通过一段时间的查资料和 ...

  2. Java SE —— 专栏总集篇

    前言: Java 语言,是相对于其他语言而言,门槛低,而且功能还强大的一门编程语言,本人十分看好这一门语言,但是,它也是有深度的,看过本人的<数据结构与算法>专栏的同学们有福了,因为本人在 ...

  3. linux常用命令--打包和压缩文件

    bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件 bzip2 file1 压缩一个叫做 'file1' 的文件 gunzip file1.gz 解压一个叫做 'file1 ...

  4. Chrome 浏览器安装 ChroPath 插件

    1.下载地址 http://www.cnplugins.com/devtool/chropath/download.html 2.安装方法 a.把下载的文件更改后缀名变为压缩包,然后解压到本地:如下图 ...

  5. [PHP][linux] 命令行脚本接收传入参数的

    第一种 :用{ $argv }接受参数 第二种 : getopt() 第三种:

  6. PyTorch中在反向传播前为什么要手动将梯度清零?

    对于torch中训练时,反向传播前将梯度手动清零的理解 简单的理由是因为PyTorch默认会对梯度进行累加.至于为什么PyTorch有这样的特点,在网上找到的解释是说由于PyTorch的动态图和aut ...

  7. pytorch实现MLP并在MNIST数据集上验证

    写在前面 由于MLP的实现框架已经非常完善,网上搜到的代码大都大同小异,而且MLP的实现是deeplearning学习过程中较为基础的一个实验.因此完全可以找一份源码以参考,重点在于照着源码手敲一遍, ...

  8. php算--------法

    <?php //冒泡排序:两两交换数值,最小的值在最左边,就如最轻的气泡在最上边.对整列数两两交换一次//最小的数在最左边,每次都能得一个在剩下的数中的最小 的数//“冒”出来的数组成一个有序区 ...

  9. Windows 自动登录

    https://serverfault.com/questions/840557/auto-login-a-user-at-boot-on-windows-server-2016 Use Sysint ...

  10. java 8中 predicate chain的使用

    目录 简介 基本使用 使用多个Filter 使用复合Predicate 组合Predicate Predicate的集合操作 总结 java 8中 predicate chain的使用 简介 Pred ...