jdbc介绍Statement使用

数据库系列- JDBC 的三种 Statement 是什么?它们有什么区别? 参数化的 SQL 语句可以让数据库区分哪些是数据,哪些是命令,从而避免被恶意篡改。上面的代码创建了一个 PreparedStatement 对象,然后调用了 setString 方法,为第一个参数赋值为 “Tom”,然后调用了 executeQuery 方法,执行预编译的 SQL 语句,返回了一个 ResultSet 对象。上面的代码创建了一个 Statement 对象,然后调用了 executeQuery 方法,传入了一个 SQL 查询语句,返回了一个 ResultSet 对象,表示查询结果集。 阅读详情

一.JDBC介绍

JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统

  1. DriverManager(java.sql.DriverManager)
    装载驱动程序,管理应用程序与驱动程序之间的连接
  2. Driver(由驱动程序开放式提供)
    将应用程序的API请求转换为特定的数据库请求
  3. Connection(java.sql.Connection)
    将应用程序连接到特定的数据库
  4. Statement
    在一个给定的连接中,用于执行一个数据库SQL语句u
  5. ResultSet
    SQL语句完成 后,返回的数据库结果集(包括行、列)

二.JDBC操作

  1. 加载驱动
    Class.forName(“com.mysql.cj.jdbc.Driver”);
  2. 创建与数据库的连接
    Conn conn = DriverManager.getConnection(“jdbc:mysql:///demo04?characterEncoding=utf8&useSSL=false&serverTimezone=UTC”,“root”,“root”);
    1. url:jdbc:mysql:///testcharacterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    2. username:root
    3. password:root
  3. 创建通道(Statement)
    Statement stmt = conn.createStatement();
  4. 执行SQL指令
    1. executeUpdate():主要执行DML语句(insert,update,delete)
      该方法返回该SQL语句影响的行数,随后直接转入第6步,关闭资源。
    2. executeQuery():主要执行DQL语句(select语句)
      该方法会返回一个结果集,此时执行第5步,对结果集进行处理,然后再关闭资源
  5. 处理结果集
    通过ResultSet来获得查询结果
    1. ResultSet实例最初定位在结果集第一行之前,通过next()方法判断是否有该行记录,如果该行记录存在,该方法返回true,如果不存在返回false.
    2. ResultSet中存在大量的 getXXX()方法,用于获取值。可以同查询结果的列名获取值,或者查询的结果的列的位置(1,2,3…)来获取值
    3. while (rs.next()){
      String users = rs.getString(“users”);
      String passwords = rs.getString(“passwords”);
      System.out.println(users+" "+passwords);
      }
  6. 关闭资源
    一定注意关闭资源的顺序,先关闭ResultSet,Statement,Connection

三.Statement和ResultSet

  1. 利用Statement执行查询
 Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获取链接
            conn = DriverManager.getConnection("jdbc:mysql:///demo04?characterEncoding=utf8&useSSL=false&serverTimezone=UTC","root","root");
            //3.创建通道
            stmt = conn.createStatement();
            //4.执行sql
            rs = stmt.executeQuery("SELECT  *  FROM user_table");
            //5.处理结果集
            while (rs.next()){
                String users = rs.getString("users");
                String passwords = rs.getString("passwords");
                System.out.println(users+" "+passwords);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {//6.关闭资源
            try {
                if(null!=rs){
                    rs.close();
                }
                if(null!=stmt){
                    stmt.close();
                }
                if(null!=conn){
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
  1. 利用Statement实现增删改
package com.openlab.test;

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

public class Test06 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt  = null;
        try {
            //1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获取链接
            conn = DriverManager.getConnection("jdbc:mysql:///demo04?characterEncoding=utf8&useSSL=false&serverTimezone=UTC","root","root");
            //3.创建通道
            stmt = conn.createStatement();
            //4.执行sql并接受返回的结果
            int rows = stmt.executeUpdate("INSERT INTO student VALUES(119,'白豆芽','男','2001-01-01 11:11:14',3223)");
            System.out.println(rows);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e){
            e.printStackTrace();
        }finally {
            try {//5.关闭资源
                if(null!=stmt){
                    stmt.close();
                }
                if(null!=conn){
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}
【原创工具 | OpenCV-CamCalib】一个基于 OpenCV 的自动化相机数据采集和标定程序 一个基于OpenCV的自动化相机数据采集和标定程序。系统内置相机地址默认为 0。 阅读详情

相关推荐

vivado安装空间与依赖要求:入门须知要点

准备安装Vivado时,需重点关注系统空间和依赖环境的配置。结合vivado安装教程,详细说明最低磁盘要求、内存配置及操作系统兼容性,帮助新手快速搭建开发环境,避免常见安装失败问题。

weixin_34725745的博客 1578

JDBC的Statement

一、Statement 1.Statement对象,用于执行静态sql语句并返回其生成的结果的对象。 2.在建立连接后,需要对数据库进行访问,执行命令或是sql语句,可以通过 (1).Statement【存在sql注入】 (2).PreparedStatement[预处理] (3).CallableStatement[存储过程] 3.Statement对象执行sql语句,存在sql注入风险。 ...

qq_46093575的博客 2767

加权余量法求解偏微分方程

加权余量法(Weighted Residual Method)是一种数值方法,用于求解偏微分方程(PDEs)。其基本思想是将偏微分方程的残差(或余量)通过加权函数加权,并使加权余量在定义域上为零,从而形成一组代数方程进行求解。

leizhengshenglzs的博客 1793

【Java 进阶篇】JDBC Statement:执行 SQL 语句的重要接口

Statement接口是JDBC的一部分,它允许我们向数据库发送SQL查询和更新语句,并从数据库中获取结果。StatementStatement:用于执行普通的SQL语句,不带有参数。:用于执行预编译的SQL语句,可以带有参数,防止SQL注入攻击。:用于执行数据库存储过程。在本文中,我们将主要关注Statement接口及其用法。Statement接口是JDBC中执行SQL语句的关键接口之一。通过创建Statement对象,我们可以执行查询和更新等各种数据库操作。

繁依Fanyi的博客 9588

Ubuntu20.04安装Torque-6.1.2单机版(踩坑篇)

说明:PBS排队系统原先是在Centos7安装使用很顺利,但是有客户需求在Ubuntu20.04上使用,着手在Ubuntu20.04安装上安装的时候发现很多报错,并不能顺利安装,网上查找到的教程,有的说是让放弃转slurm,有的是换源安装,但是安装好的版本很低,有许多bug,不是很好用。经过自己慢慢摸索之后,改了部分配置以及源码之后,能够顺利安装,再次记录一下踩坑心得,与大家一起分享学习。如有问题,欢迎大家来撩。...............

华青水上的博客 8087

Zynq7000双核裸机开发实战:如何安全实现共享内存与乒乓RAM设计

本文深入探讨了Zynq7000双核裸机开发中的共享内存与乒乓RAM设计,重点解析了核间通信的Cache一致性处理机制和硬件级实现方案。通过实战代码示例和性能优化技巧,帮助开发者解决双核运行中的访问冲突问题,提升嵌入式系统开发效率。

weixin_29191669的博客 376

关于jdbc中Statement

关于jdbc中Statement 一、 PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句;Statement每次都会解析/编译SQL,确立并优化数据获取路径;所以其执行速度要快于 Statement 对象。 二、作为 Statement 的子类, PreparedStatement 继承了 Statement ...

weixin_43510522的博客 2909

EnlightenGAN训练复现记录

记录EnlightenGAN过程中的问题和解决方式。提示:以下是本篇文章正文内容,下面案例可供参考。

L_27N113E的博客 3847

JDBC连接超时

JDBC连接超时JDBC连接超时 简述 transaction timeout statement timeout socket timeout 操作系统的socket timeout DBCP配置 常见异常简述transaction timeoutstatement timeout statement timeout用来限制statement的执行时长,timeout的值通过调用JDBC的java

abcd1594433168的专栏 3128

微信小程序消息推送实战:从模板消息到订阅消息的进阶指南

本文详细解析了微信小程序消息推送的核心机制,重点对比了模板消息与订阅消息的差异与应用场景。模板消息适用于支付成功等强即时性业务回执,而订阅消息则需用户授权,更适合物流提醒等可预期通知。文章提供了从授权、配置到发送的完整实战指南,并分享了常见的避坑技巧与性能优化建议,帮助开发者构建高效、合规的用户触达体系。

weixin_29231027的博客 596

基于Python的车牌识别系统实现

本文将以基于Python的车牌识别系统实现为方向,介绍车牌识别技术的基本原理、常用算法和方法,并详细讲解如何利用Python语言实现一个完整的车牌识别系统。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 5万+

JDBC接口介绍之Statement

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。Statement:1.介绍:对数据库数据一系列的操作依赖于SQL语句,而Statement接口是用来执行SQL语句的,Statement对象需要通过Connection类里面的createStatement()方法进行创建。如下图:先创建一个连接数据库的类,以后

l4432321的博客 589

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JDBC-Statement+ResultSet介绍

案例代码 JDBC-ResultSet ResultSet(结果集对象)的作用:**封装了SQL查询语句的结果 ** ResultSet对象提供了操作结果数据的方法 案例代码 结束!!!!!

秃头青年的学习记录博客 492

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JavaWeb学习-JDBC系列-4-Statement介绍

接下里学习Statement接口,Statement对象是通过Connection接口来创建的,它主要有两个功能,执行静态SQL语句和拿到执行结果集。实际项目中重点肯定是通过Statement对象去执行各种SQL语句,所以这篇,我们详细学习下Statement的SQL语句执行练习方法,结果集操作放到下一篇文章学习。 1.相关学习代码 //得到执行SQL语句的Statement对象 State...

Anthony_tester的博客 1481

JDBC02-ResultSet、Statement、PreparedStatement介绍及使用

sql注入、JDBC的API

weixin_42482333的博客 869

关于jdbc的介绍以及PreparedStatement和Statement牵涉的sql注入问题解决

1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。 2 JDBC原理 早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂...

BestQiang的博客 1万+

JDBC规范中5个类DriverManager、Connection、Statement、ResultSet、PreparedStatement的介绍

1)DriverManager: 驱动管理对象 (1)注册驱动 registerDriver, 如何和Class.forName联系起来呢? Class.forName加载完毕后,肯定会有些代码自动执行, static块中调用了registerDriver; mysql5之后的驱动可以省略注册驱动,因为包里面会自动读取; (2)获取数据库连接 static getConnection url: 指定连接的路径. jdbc.mysql://ip地址或域名:端口/数据库名称 jdb.

focus-unchanged-thing 841

JDBC中API(DriverManager ,和Connection,statement介绍)

开启事务setAutoCommit(booleanautoCommit)true为自动提交事务,false为手动提交事务,即开启事务提交事务commit()回滚事务rollback()

学习笔记 568

第十章:介绍JDBC相关的API以及PreparedStatement和Statement的区别

PreparedStatement相较于Statement的优点: 用户登录系统来比较: 不再使用“+”来拼接sql语句,减少语法错误,语义性更强; 将模板sql(固定的部分)和参数部分进行分离,提高维护性; 有效的解决sql注入问题; 效率高。 JDBC相关API JDBC API是一系列的接口,它统一和规范了应用程序与数据库的连接、执行SQL语句,并到得到返回结果等各类操作。声明在java.sql与javax.sql包中。 DriverManager驱动管理类 registDriver(Drive

Hubert的博客 231

jdbc以及PrepardStatement与statement接口的简单介绍

开发者在使用JDBC时,需要充分理解这些重难点,并采取相应的措施来确保程序的正确性、安全性和性能。:JDBC提供了事务管理的功能,可以确保一系列操作的原子性、一致性、隔离性和持久性。SQL注入是一种严重的安全漏洞,攻击者可以通过输入恶意的SQL代码来操纵数据库。连接资源是昂贵的,需要妥善管理,避免资源浪费和泄露。在第一次执行时被编译和缓存,后续执行时直接使用缓存的编译结果,避免了重复编译的开销。如果需要构建复杂的、动态的SQL语句,可能需要结合使用。不同的数据库有不同的驱动类名,需要正确指定。

m0_71936529的博客 394

java jdbc(二)各接口介绍--Connection,Statement,ResultSet,PreparedStatement,ResultSetMetaData,DatabaseMetaDa

1.Connection接口提供了许多 transaction管理方法,比如commit(),rollback()等等,可以获得tatement, PreparedStatement, and DatabaseMetaData对象。 常用方法:1) public Statement createStatement(): creates a statement object that can be

zfireear的博客 937

JavaWeb之JDBC(1.1):MySQL数据库的连接、Statement接口及弊端、PrepareStatement介绍

JDBC连接MySQL数据库、JDBC工具类、Statement几口实现及其弊端、PrepareStatement接口

qq_43265673的博客 485

JDBC---Two(DriverManager类Connection类Statement类PreparedStatement类的介绍)

JDBC—Two DriverManager类—>Connection类—>Statement类 由DriverManager(驱动管理对象)得到 Connection(数据库连接对象) 由Connection(数据库连接对象)得到 Statement(执行sql的对象) 由Statement(执行sql的对象)去执行SQL语句 DriverManager:驱动管理对象 注册驱动:告诉...

weixin_43402591的博客 415

Day12 _jdbc七大操作步骤的关于API的介绍;使用Statement对象完成DDL语句以及DML语句操作;关于Statement完成DQL语句的应用(笔记)

1.jdbc七大操作步骤的关于API的介绍 java.sql.Drvier 驱动接口 java.sql.DriverManager:驱动管理类(管理jdbc的驱动服务) java.sql.Connection:与特定数据库的一种会话连接 java.sql.Statement:执行静态sql语句 (执行对象,操作数据库) java.sql.ResultSet:获取数据表的结果集 (接口) 1)导包并且注册驱动 Class.forName("com.mysql.jdbc.Driver) ; //mysql5.

m0_67499084的博客 312

jdbc Statement的executeUpdate、executeQuery、execute 方法介绍与使用

23号员工的博客 766
上一篇: MySQL回顾+新内容
下一篇: SQL注入与PreparedStatement
PPDY小芽
博客等级 码龄6年 150粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值