Statement和Preparedment都是用来实现数据库连接的API接口,下面我们对两者的实现方式分别进行介绍

一.Statement

概述

statement用于执行一些简单的静态SQL语句,并返回它所生成的结果对象

  • 接口:

    public interface Statement extends Wrapper
  • 在默认情况下,同一时间内每个Statement对象只能打开一个ResultSet对象.因此,如果读取一个ResultSet对象与另一个交叉,则这两个对象必须是由不同的Statement对象生成的.

实现步骤

1.加载mysql驱动类

2.建立与数据库连接,并返回连接对象

3.向数据库发送sql

4.关闭数据库连接

来看一下实际操作:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*使用Statement接口执行SQL语句*/
public class Demo2 {
​public static void main(String[] args) throws ClassNotFoundException, SQLException {
​Class.forName("com.mysql.cj.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone = Asia/Shanghai","root","111");
​Statement statement = connection.createStatement();
​String name = "赵六";String gender = "女";String phone = "159";String no = "5";
​//修改操作//statement.executeUpdate("Update student set name = '"+name+"',gender = '"+gender+"'"+"where no = "+no);
​//删除操作statement.executeUpdate("delete from student where no ="+no);
​statement.close();connection.close();}
}
​

二.PreparedStatement

概述

PreparedStatement表示预编译的SQL语句的对象.相比于Statement我们更常使用        PreparedStatement来实现java与数据库的连接操作

  • 接口:

    public interface PreparedStatement extends Statement

    * 即说明PreparedStatement是继承于Statement的

  • 在此接口中,SQL语句被预编译存储在PreparedStatement对象中,然后可以使用此对象多次高效的执行该语句

实现步骤

1.加载mysql驱动类

2.建立与数据库连接,并返回连接对象

3.向数据库发送sql

4.关闭数据库连接

来看一下实际操作

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/*使用PreparedStatement接口实现SQL语句*/
public class Demo3 {
​public static void main(String[] args) throws ClassNotFoundException, SQLException {
​Class.forName("com.mysql.cj.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone = Asia/Shanghai","root","111");
​String name = "Lisa";String gender = "男";String phone = "157";String no = "9";
​//预编译方式,预先将SQL及参数预编译到PreparedStatement对象中//增添语句/*PreparedStatement ps = connection.prepareStatement("insert into student(name,gender,phone)"+"value (?,?,?)");ps.setObject(1,name);ps.setObject(2,gender);ps.setObject(3,phone);
​ps.executeUpdate();//执行*/
​/*//修改语句`PreparedStatement ps = connection.prepareStatement("update student set name=?,gender=?,phone=?"+"where no = ?");ps.setObject(1,name);ps.setObject(2,gender);ps.setObject(3,phone);ps.setObject(4,no);ps.executeUpdate();*/
​//删除语句PreparedStatement ps = connection.prepareStatement("delete from student where no=?");ps.setObject(1,no);ps.executeUpdate();ps.close();connection.close();}
}
​

Statement 和 PrepareStatement执行SQL相关推荐

  1. Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb

    Java 操作多类型数据库下的兼容性验证 第一章:数据库测试 ①[ oracle 数据库不支持分号]ORA-00933: SQL 命令未正确结束 ② [sqlserver 数据库不支持 commit] ...

  2. 使用jdbc执行SQL实现登录查询2-避免SQL注入版

    配置文件及工具类参考1 package com.jdsc;import javax.rmi.CORBA.Util; import java.sql.*; import java.util.Scanne ...

  3. mybatis 创建session, 缓存, 执行SQL

    案例代码, 上一个博客已经分析了 SqlSessionFactory 的 build , 本文内容部分知识基于上篇的文章 mybatis 的初始化, build 这节我们分析, 开启session, ...

  4. Statement对象重新执行将关闭当前ResultSet

    如下代码,希望对ResultSet结果集每一项分别处理,在while中对statement进行操作,结果只能对结果集的第一项进行处理后while循环就退出了. /**/       String qu ...

  5. java代码执行mysql语句_三种执行SQL语句的的JAVA代码

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

  6. jdbc preparestatement 执行多条语句_第二十一天JDBC编程

    JDBC编程 JDBC是连接数据库和Java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.本篇将介绍一下如何使用JDBC操作数据库(以MySQL为例). 一.JDBC JDBC ...

  7. Java Statement PK PrepareStatement

    PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement.PreparedStatement 和 CallableStatement三种方式来执行查询 ...

  8. 多次执行sql 后卡住_解Bug之路记一次中间件导致的慢SQL排查过程

    解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,就以此为素材写出了本篇文章. Bug现场 我们的分 ...

  9. beeline执行sql文件_MyBatis的SQL执行流程不清楚?看完这一篇就够了

    前言 MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下: 1.Mapper接口和映射文件是如何进行绑定的 2.MyB ...

最新文章

  1. 如何打造规范的开源项目workflow
  2. 创建XNA Shooter游戏——挑战:用引擎编写自己的游戏
  3. 正则表达式(2.实例)
  4. [YTU]_2443 ( C++习题 复数类--重载运算符3+)
  5. c语言稀疏矩阵做除法,稀疏矩阵的除法
  6. COCO 数据集的使用
  7. MySQL学习笔记(二):MyISAM 存储引擎
  8. 利用泛型和反射,将从数据库select出来的集合直接转换成对象
  9. c++ 时间序列工具包_我的时间序列工具包
  10. 如何Super Vectorizer从Mac 上的图像中删除多余的颜色区域?
  11. 解决ThinkServer TS250中网卡在centos6.5中没有安装驱动
  12. emcy协议_商铺三方租赁协议合同范本
  13. 案例分享:Qt西门子PLC调试模拟工具(包含PLC上位机通讯,PLC服务器,读写Byte、Int、DInt、Real)(持续更新,当前v1.6.0)
  14. 学校计算机社团面试问题及答案,社团二轮面试题目
  15. 圆形与矩形碰撞算法分析
  16. 小程序 朋友圈,点赞 ,评论,发布动态,功能,局部刷新数据之 -----评论
  17. 20140228老沙的感觉
  18. 旋转矩阵,矩阵,共轭矩阵
  19. 2021研面准备 -- 计算机网络知识点整理(一)概述
  20. 苹果三代耳机_苹果三代蓝牙无线耳机

热门文章

  1. Redis缓存面临的缓存穿透问题
  2. 图论算法 有图有代码 万字总结 向前辈致敬
  3. 人们使用计算机网络的主要目的是,第一章《计算机网络基础知识》试题
  4. java命名规范法则大全
  5. signature=4f0a1c9773fc07031e260b016c514c92,基于LDAP的统一身份认证系统设计与实现
  6. Beyond One-Model-Fits-All: A Survey of Domain Specialization for Large Language Models
  7. Java 位运算系列之通过位运算操作状态
  8. 字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验
  9. 循迹的光电搬运小车含PID(硬件+源代码+3D文件)
  10. 【js基础】js字符串类型的转义符