Statement 和 PrepareStatement执行SQL
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相关推荐
- Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb
Java 操作多类型数据库下的兼容性验证 第一章:数据库测试 ①[ oracle 数据库不支持分号]ORA-00933: SQL 命令未正确结束 ② [sqlserver 数据库不支持 commit] ...
- 使用jdbc执行SQL实现登录查询2-避免SQL注入版
配置文件及工具类参考1 package com.jdsc;import javax.rmi.CORBA.Util; import java.sql.*; import java.util.Scanne ...
- mybatis 创建session, 缓存, 执行SQL
案例代码, 上一个博客已经分析了 SqlSessionFactory 的 build , 本文内容部分知识基于上篇的文章 mybatis 的初始化, build 这节我们分析, 开启session, ...
- Statement对象重新执行将关闭当前ResultSet
如下代码,希望对ResultSet结果集每一项分别处理,在while中对statement进行操作,结果只能对结果集的第一项进行处理后while循环就退出了. /**/ String qu ...
- java代码执行mysql语句_三种执行SQL语句的的JAVA代码
问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...
- jdbc preparestatement 执行多条语句_第二十一天JDBC编程
JDBC编程 JDBC是连接数据库和Java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.本篇将介绍一下如何使用JDBC操作数据库(以MySQL为例). 一.JDBC JDBC ...
- Java Statement PK PrepareStatement
PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement.PreparedStatement 和 CallableStatement三种方式来执行查询 ...
- 多次执行sql 后卡住_解Bug之路记一次中间件导致的慢SQL排查过程
解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,就以此为素材写出了本篇文章. Bug现场 我们的分 ...
- beeline执行sql文件_MyBatis的SQL执行流程不清楚?看完这一篇就够了
前言 MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下: 1.Mapper接口和映射文件是如何进行绑定的 2.MyB ...
最新文章
- 如何打造规范的开源项目workflow
- 创建XNA Shooter游戏——挑战:用引擎编写自己的游戏
- 正则表达式(2.实例)
- [YTU]_2443 ( C++习题 复数类--重载运算符3+)
- c语言稀疏矩阵做除法,稀疏矩阵的除法
- COCO 数据集的使用
- MySQL学习笔记(二):MyISAM 存储引擎
- 利用泛型和反射,将从数据库select出来的集合直接转换成对象
- c++ 时间序列工具包_我的时间序列工具包
- 如何Super Vectorizer从Mac 上的图像中删除多余的颜色区域?
- 解决ThinkServer TS250中网卡在centos6.5中没有安装驱动
- emcy协议_商铺三方租赁协议合同范本
- 案例分享:Qt西门子PLC调试模拟工具(包含PLC上位机通讯,PLC服务器,读写Byte、Int、DInt、Real)(持续更新,当前v1.6.0)
- 学校计算机社团面试问题及答案,社团二轮面试题目
- 圆形与矩形碰撞算法分析
- 小程序 朋友圈,点赞 ,评论,发布动态,功能,局部刷新数据之 -----评论
- 20140228老沙的感觉
- 旋转矩阵,矩阵,共轭矩阵
- 2021研面准备 -- 计算机网络知识点整理(一)概述
- 苹果三代耳机_苹果三代蓝牙无线耳机
热门文章
- Redis缓存面临的缓存穿透问题
- 图论算法 有图有代码 万字总结 向前辈致敬
- 人们使用计算机网络的主要目的是,第一章《计算机网络基础知识》试题
- java命名规范法则大全
- signature=4f0a1c9773fc07031e260b016c514c92,基于LDAP的统一身份认证系统设计与实现
- Beyond One-Model-Fits-All: A Survey of Domain Specialization for Large Language Models
- Java 位运算系列之通过位运算操作状态
- 字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验
- 循迹的光电搬运小车含PID(硬件+源代码+3D文件)
- 【js基础】js字符串类型的转义符