Statement该对象用于执行静态SQL语句并返回它产生的结果。
表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题

PreparedStatement对象是一个预编译的SQL语句。动态SQL

功能
1.执行SQL

3个方法

①方法:execute() 可以执行任意的SQL,用的不多了解
修饰/返回值类型:boolean

2.executeUpdate() 执行DML语句

方法:executeUpdate() 执行DML语句(insert、delete、update)增删改数据。不常使用:DDL语句(create、drop、alter)增删改表和库
修饰/返回值类型:int

返回值:执行DML语句受影响的行数。可以通过这个值来判断SQL语句是否执行成功>0执行成功,反之失败。
    执行DDL语句没有返回结果

插入一条数据

package cn.itcast.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; /**
* insert插入
* */
// 第一步不是导入驱动架包了,因为已经导入过了
public class JdbcDemo2 {
public static void main(String[] args) {
Statement stmt = null;
Connection conn = null;
try {
// 1.注册驱动,会抛出ClassNotFoundException异常(MySQL5.0后可省略)
Class.forName("com.mysql.jdbc.Driver");
// 2.获取Connection对象,会抛出SQLException异常(因为连接的是本机的数据库所以ip地址和端口号可以省略不写)
conn= DriverManager.getConnection("jdbc:mysql:///myemployees","root","ROOT");
// 3.定义SQL
String sql="insert into job_grades values('ma','16789','16789');";
// 4.获取执行SQL的对象Staement
stmt = conn.createStatement();
// 5.执行SQL(返回一个结果)
int count = stmt.executeUpdate(sql);//影响的行数
// 6.处理结果
System.out.println(count);
if (count>0){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
// 7.释放资源(如果第5步执行报错就不会执行下面的语句,下面的代码就不会正常执行)
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
// 8.所以应该在finally里释放资源
// stmt.close();因为stmt不是全局变量,所以出了try的作用域就找不到了
// 先复制Statement stmt =,在等号后赋值为null
// 删除这句话中的“Statement” stmt = conn.createStatement();
// stmt.close();
// 如果只这样写程序在执行第3步的时候报错,例如密码写错了之类的就会报空指针异常
// 所以先要判断
// 释放执行SQL的对象
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 还要释放数据库连接对象,再次执行上面的操作
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

修改插入的数据

package cn.itcast.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; /**
* update修改
* */
public class JdbcDemo3 {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接对象
conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT");
//3.定义SQL
String sql ="update job_grades set highest_sal = '999999' where grade_level = 'ma';";
//4.获取执行SQL的对象
stmt = conn.createStatement();
//5.执行SQL
int count = stmt.executeUpdate(sql);
//6.处理返回结果
System.out.println(count);
if (count>0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//7.释放资源
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

删除插入的数据

package cn.itcast.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; /**
* delete删除
* */
public class JdbcDemo4 {
public static void main(String[] args) {
//声明数据库连接对象
Connection conn = null;
//声明数据库执行对象
Statement stmt = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接对象
conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT");
//3.定义SQL
String sql ="delete from job_grades where grade_level = 'ma';";
//4.获取执行SQL的对象
stmt = conn.createStatement();
//5.执行SQL
int count = stmt.executeUpdate(sql);
//6.处理返回结果
System.out.println(count);
if (count>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//7.释放资源
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

1.executeUpdate() 执行DDL语句

package cn.itcast.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
* DDL语句
* */
public class JdbcDemo5 {
public static void main(String[] args) {
//声明数据库连接对象
Connection conn = null;
//声明数据库执行对象
Statement stmt = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接对象
conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT");
//3.定义SQL
String sql ="create table stu (id int,name varchar(20));";
//4.获取执行SQL的对象
stmt = conn.createStatement();
//5.执行SQL
int count = stmt.executeUpdate(sql);
//6.处理返回结果
System.out.println(count); } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//7.释放资源
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

3.executeQuery()执行DDL语句

方法:executeQuery(String sql) 执行DQL语句(select)查询语句
修饰/返回值类型:ResultSet (结果集)

JDBC——Statement执行SQL语句的对象的更多相关文章

  1. 使用Statement执行sql语句

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java ...

  2. JDBC中执行SQL语句的方式

    一.执行DDL.DML语句 DDL.DML分别表示数据库定义语言.数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法. 代码如下: public static ...

  3. JDBC中执行sql语句的 增 , 删 , 改 , 查 的方法

    executeQuery()  : 执行 SELECT 语句,它几乎是使用最多的 SQL 语句 executeUpdate() :   执行 INSERT.UPDATE 或 DELETE 语句以及 S ...

  4. JDBC课程2--实现Statement(用于执行SQL语句)--使用自定义的JDBCTools的工具类静态方法,包括insert/update/delete三合一

    /**JDBC课程2--实现Statement(用于执行SQL语句) * 1.Statement :用于执行SQL语句的对象: * 1): 通过Connection 的createStatement( ...

  5. JDBC——PreparedStatement执行SQL的对象

    Statement的子接口,预编译SQL,动态SQL 功能比爹强大 用来解决SQL注入的 预编译SQL:参数使用?作为占位符,执行SQL的时候给?赋上值就可以了 使用步骤: 1.导入驱动jar包 复制 ...

  6. 数据库程序接口——JDBC——API解读第二篇——执行SQL的核心对象

    结构图 核心对象 Statement Statement主要用来执行SQL语句.它执行SQL语句的步骤为: 第一步:创建statement对象. 第二步:配置statement对象,此步骤可以忽略. ...

  7. Java JDBC下执行SQL的不同方式、参数化预编译防御

    相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...

  8. 三种执行SQL语句的的JAVA代码

    问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...

  9. statement 对象执行sql语句

    statement对象执行sql语句    关于Statement.它是Java执行数据库操作的一个重要步骤,可以执行一些简单的SQL语句,从而完成对数据库的操作.它有两个子接口,分别是Prepare ...

随机推荐

  1. SpringBoot安全管理--(一)SpringSecurity基本配置

    简介: Spring Boot针对Spring Security提供了自动化配置方案,因此可以使Spring Security非常容易地整合进Spring Boot项目中,这也是在Spring Boo ...

  2. C#连接数据库的方法

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  3. JMeter接口测试-跨线程组取参数值的两种方法

    前言 如果你工作中已经在用jmeter做接口测试,或性能测试了,你可能会遇到一个麻烦.那就是jmeter的变量值不能跨线程组传递.如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现. 但 ...

  4. Electron – 基础学习(2): 项目打包成exe桌面应用 之electron-packager

    项目创建完成,启动正常,接下来就是项目打包了.将测试Demo打包成exe桌面应用,点击exe文件,运行项目. 书接上文,创建项目有三种方式 Git拷贝.直接创建:通过electron社群提供的命令行工 ...

  5. MySQL在Windows中设置环境变量

    在桌面选择“计算机”的图标(或者是我的电脑),右键-->属性-->点击“高级系统设置” 然后选择 高级  选项点击环境变量 然后点击新建-> 变量名为MYSQL_HOME 变量值为m ...

  6. element使用

    官方网址: 点击 全局使用 1.创建项目 vue init webpack vue-ele 配置 2.安装依赖 npm install 3.安装loader模块(开发) npm install sty ...

  7. 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification

    论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...

  8. Byte 一个字节的数据大小范围为什么是-128~127

    一个字节是8位,最高位是符号位,最高位为0则是正数.最高位为1则是负数 如果一个数是正数,最大数则为:01111111,转为十进制为127, 如果一个数是负数,按照一般人都会觉得是11111111,转 ...

  9. maven依赖包无法更新下载

    在IDEA工程中导入已存在的module时,按默认设置,直到完成导入,结果所有的外部依赖包都无法更新下载,即使是更新了setting.xml配置文件信息,依旧是不能更新下载依赖包,现将具体的操作过程和 ...

  10. webkit 技术内幕 笔记 一

    目前应用最广的渲染引擎项目-webkit webkit 内部渲染html网页的原理 webkit 内容工作原理 web 的接入口浏览器 浏览器的内核-渲染引擎(像webkit)