当前位置: 首页 > news >正文

JDBC简介

JDBC最基本的知识点要求理解并会使用下边的两个案例即可:

前言:

Jdbc操作步骤简析:

1.Connection conn=DriverManager.getConnection(url,账号,密码):DriverManager类的连接方法根据url账号密码连接数据库,并返回一个连接对象Connection conn

2.Connection对象表示java代码和数据库的一个连接(将连接封装为一个java对象了<里边包含连接的数据库名,连接地址,表信息,数据库时区,数据库编码等信息>)

3.PreparedStatement pstmt = conn.prepareStatement(sql语句) 表示用连接对象的prepareStatement(sql语句)将sql语句发送给数据库并获取到一个预编译对象,预编译对象可以用来设置占位符的值,同时可以给数据库发送执行sql语句的指令

4.ResultSet rs = pstmt.executeQuery(): 表示用预编译对象pstmt的executeQuery()方法给数据库发送执行sql语句的指令来让数据库执行SQL语句, 并将 插叙结果放到一个结果集对象ResultSet rs中(可以从此对象中获取查询结果)。 //如果是数据操作就调用int rs=pstmt.executeUpdate();执行数据更新操作并返回生效的行数。

一、DML:

package com.zyq.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;//本类和StmtDemo1_DML不同之处在于:
//     将Statement类换成了PreparedStatement类(调用的方法也不同 <改成了conn.prepareStatement(sql)>)
//     好处在于PreparedStatement类支持: 给sql语句中包含 占位符 ? (可以防止黑客的sql注入攻击)//     SQL注入介绍:   "select * from users  where  username= '+userName+' and password=  '+password+' ";
//     当输入了上面的用户名  "'1' or 1 = 1 --"   和密码"123" ,上面的SQL语句变成如下格式:
//     "SELECT * FROM user_table WHERE username='1' or  1=1   -- and password='123'"
//     此SQL中的  username='1' or  1=1   是一个永远成立的条件。  后边再加上两个减号  "--"  表示注释掉and password='123'"
//     则用此方式如论用户输什么账号密码,只要账号值后边加上   or  1=1   --   则总是能登录成功(这就是黑客最低级的攻击手段:SQL注入)。
public class PStmtDemo1_DML {public static void main(String[] args) throws Exception {//1. 注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/tedu", "root", "root");//3.定义sqlString sql = "insert into dept(dept_id,dname,loc)value (?,?,'延安')";//String sql = "update dept set loc='yanAn' where dept_id=11";//String sql = "delete from  dept where dept_id=11";//String sql = "create table ts(id int(10),  name char(100))";// 4.获取执行sql的对象statementPreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setInt(1, 12);//给sql语句中的第1个占位符?赋值为12(表示插入的dept_id的值是12)pstmt.setString(2, "java教学部");//给sql语句中的第2个占位符?赋值为"java教学部"(表示插入的dname值是"java教学部")//5.执行sql//int count = pstmt.executeUpdate();  //受影响的行//System.out.println(count);//打印1表示成功插入了1行数据boolean rs = pstmt.execute();  //受影响的行//6.处理结果System.out.println(rs);//打印1表示成功插入了1行数据//7.释放资源pstmt.close();conn.close();}}

二、DQL:

package com.zyq.jdbc;import java.sql.*;//本类和StmtDemo2_DQL不同之处在于:
//     将Statement类换成了PreparedStatement类(调用的方法也不同 <改成了conn.prepareStatement(sql)>)
//     好处在于PreparedStatement类支持: 给sql语句中包含 占位符 ? (可以防止黑客的sql注入攻击)
//     SQL注入介绍:   'select * from users  where  username=' "+userName+" ' and password=' "+password+" '";
//     SQL注入介绍:   "select * from users  where  username= '+userName+' and password=  '+password+' ";
//
//     当输入了上面的用户名  "'1' or 1 = 1 --"   和密码"123" ,上面的SQL语句变成如下格式:
//     "SELECT * FROM user_table WHERE username='1' or  1=1   -- and password='123'"
//     此SQL中的  username='1' or  1=1   是一个永远成立的条件。  后边再加上两个减号  "--"  表示注释掉and password='123'"
//     则用此方式如论用户输什么账号密码,只要账号值后边加上   or  1=1   --   则总是能登录成功(这就是黑客最低级的攻击手段:SQL注入)。
public class PStmtDemo2_DQL {public static void main(String[] args) throws Exception {//1. 注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/tedu", "root", "root");//3.定义sqlString sql = "select * from dept where dept_id=?";// 4.获取执行sql的对象statementPreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setInt(1, 10);//5.执行sql并获取executeQuery返回的结果集对象ResultSet rsResultSet rs = pstmt.executeQuery();  //受影响的行//6.处理结果(从结果集对象ResultSet rs中获取数据)while(rs.next()){//6.1.判断结果集对象中是否有数据int deptId=rs.getInt("dept_id");//6.2.从结果集对象ResultSet rs中获取数据dept_id//"dept_id"也可以换成1(表示结果集中的第1列)String dname=rs.getString(2);String loc=rs.getString(3);System.out.println("查询结果:" + deptId + ", " + dname + ", " + loc);}//7.释放资源pstmt.close();conn.close();}}

三、StmtDemo1_DML

package com.zyq.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class StmtDemo1_DML {public static void main(String[] args) throws Exception {//1. 注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/tedu", "root", "root");//3.定义sqlString sql = "insert into dept(dept_id,dname,loc)value (11,'教学部','延安')";//String sql = "update dept set loc='yanAn' where dept_id=11";//String sql = "delete from  dept where dept_id=11";//String sql = "create table ts(id int(10),  name char(100))";// 4.获取执行sql的对象statementStatement stmt = conn.createStatement();//5.执行sqlint count = stmt.executeUpdate(sql);  //受影响的行//6.处理结果System.out.println(count);//打印1表示成功插入了1行数据//7.释放资源stmt.close();conn.close();}}

四、StmtDemo2_DQL

package com.zyq.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class StmtDemo2_DQL {public static void main(String[] args) throws Exception {//1. 注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/tedu", "root", "root");//3.定义sqlString sql = "select * from dept where dept_id=10";// 4.获取执行sql的对象statementStatement stmt = conn.createStatement();//5.执行sql并获取executeQuery返回的结果集对象ResultSet rsResultSet rs = stmt.executeQuery(sql);  //受影响的行//6.处理结果(从结果集对象ResultSet rs中获取数据)while(rs.next()){//6.1.判断结果集对象中是否有数据int deptId=rs.getInt("dept_id");//6.2.从结果集对象ResultSet rs中获取数据dept_id//"dept_id"也可以换成1(表示结果集中的第1列)String dname=rs.getString(2);String loc=rs.getString(3);System.out.println("查询结果:" + deptId + ", " + dname + ", " + loc);}//7.释放资源stmt.close();conn.close();}}


                                             by  zhaoYQ    2024-06-12  12:31

相关文章:

JDBC简介

JDBC最基本的知识点要求理解并会使用下边的两个案例即可&#xff1a; 前言&#xff1a; Jdbc操作步骤简析&#xff1a; 1.Connection connDriverManager.getConnection(url,账号&#xff0c;密码)&#xff1a;用DriverManager类的连接方法根据url账号密码连接数据库&#xf…...

RK3568平台(触摸篇)触摸屏基本原理

一.触摸屏概述 触摸屏作为一种新的输入设备&#xff0c;它是目前最简单、方便、自然的一种人机交互方式。 触摸屏又称为“触控屏”、“触控面板”&#xff0c;是一种可接收触头等输入讯号的感应式液晶显示装置&#xff1b;当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉…...

【太原理工大学】软件系统安全—分析题

OK了&#xff0c;又是毫无准备的一场仗&#xff0c;我真是ありがとうございます 凸^o^凸 根据前几年传下来的信息&#xff0c;所谓“分析”&#xff0c;就是让你根据情节自行设计&#xff0c;例如如何设计表单等&#xff0c;这类多从实验中出&#xff0c;王老师强调好好做实验一…...

【仪器仪表/电源专题】浮地信号的测试的四种方案对比

接地信号和浮地信号区别 所有的电压测量都是差分测量&#xff0c;差分测量定义为两点之间的电压差。所以会分成两类&#xff1a; 1.参考地电平测量&#xff08;有时也叫接地信号&#xff09; 2.非参考地电平测量&#xff08;也称为浮地测量&#xff09; 测试信号可以分为接地信…...

Centos7安装jdk8或11以及切换方案

目录 jdk安装 安装OpenJDK11 安装OpenJDK8 配置默认的 Java 版本 验证 全局环境变量&#xff08;选配&#xff09; 个人版&#xff08;自己可以用&#xff0c;公司不建议&#xff09; 公司版本 /etc/profile 和 ~/.bash_profile 区别 前言-与正文无关 生活远不止眼前的苦…...

计算机二级Access选择题考点—代码篇

第1题 窗体的事件过程如下: Private Sub Form MouseDown(Button As Integer ,Shift As integer,X As Single,Y As Single)If Shift 6 And Button 2 Then MsgBox "Hello World."End lf End Sub程序运行后&#xff0c;要在窗体消息框中显示"Hello World."…...

海外仓系统如何让海外仓受益,WMS海外仓系统使用指南

随着跨境电商业务的快速发展&#xff0c;海外仓面临着需要更加高速运转的巨大挑战。 当海外仓出现因为手动作业导致效率低下&#xff0c;成本不断飙升或者出现库存管理问题的时候&#xff0c;意味着是时候引入一套合适的海外仓管理系统了。 对于寻求海外仓业务流程优化的企业…...

贪心-区间问题

135. 分发糖果 问题描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#x…...

算法分析与设计期末考试复习GDPU

重点内容&#xff1a; 绪论&#xff1a; 简单的递推方程求解 1.19(1)(2) 、 教材例题 多个函数按照阶的大小排序 1.18 分治法&#xff1a; 分治法解决芯片测试问题 计算a^n的复杂度为logn的算法&#xff08;快速幂&#xff09; 分治法解决平面最近点对问…...

分批次训练和评估神经网络模型

【背景】 训练神经网络模型的时候&#xff0c;特征组合太多&#xff0c;电脑的资源会不足&#xff0c;所以采用分批逐步进行。已经处理过的批次保存下来&#xff0c;在下一次跳过&#xff0c;只做新加入的批次训练。 选择最优模型组合在中间结果的范围内选择&#xff0c;这样…...

【CS.AL】算法核心之分治算法:从入门到进阶

文章目录 1. 概述2. 适用场景3. 设计步骤4. 优缺点5. 典型应用6. 题目和代码示例6.1 简单题目&#xff1a;归并排序6.2 中等题目&#xff1a;最近点对问题6.3 困难题目&#xff1a;分数背包问题 7. 题目和思路表格8. 总结References 1000.01.CS.AL.1.4-核心-DivedeToConquerAlg…...

leetcode刷题记录:hot100强化训练2:二叉树+图论

二叉树 36. 二叉树的中序遍历 递归就不写了&#xff0c;写一下迭代法 class Solution(object):def inorderTraversal(self, root):""":type root: TreeNode:rtype: List[int]"""if not root:return res []cur rootstack []while cur or st…...

湘潭大学信息与网络安全复习笔记2(总览)

前面的实验和作业反正已经结束了&#xff0c;现在就是集中火力把剩下的内容复习一遍&#xff0c;这一篇博客的内容主要是参考教学大纲和教学日历 文章目录 教学日历教学大纲 教学日历 总共 12 次课&#xff0c;第一次课是概述&#xff0c;第二次和第三次课是密码学基础&#x…...

C语言:头歌使用函数找出数组中的最大值

任务描述 本关任务&#xff1a;本题要求实现一个找出整型数组中最大值的函数。 函数接口定义&#xff1a; int FindArrayMax( int a[], int n ); 其中a是用户传入的数组&#xff0c;n是数组a中元素的个数。函数返回数组a中的最大值。 主程序样例: #include <stdio.h>#…...

【技巧】Leetcode 191. 位1的个数【简单】

位1的个数 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中 设置位 的个数&#xff08;也被称为汉明重量&#xff09;。 示例 1&#xff1a; 输入&#xff1a;n 11 输出&#xff1a;3 解释&#x…...

【Pandas驯化-02】pd.read_csv读取中文出现error解决方法

【Pandas】驯化-02pd.read_csv读取中文出现error解决方法 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获取 微信公众号 &…...

linux下C语言如何操作文件(三)

我们继续介绍file_util.c中的函数: bool create_dir(const char* path):创建目录,根据给定的path创建目录,成功返回true,否则返回false。如果有父目录不存在,该函数不会创建。 /*** 创建目录* @param path 目录路径* @return true 创建成功,false 创建失败*/ bool cre…...

6.14作业

使用手动连接&#xff0c;将登录框中的取消按钮使用第二中连接方式&#xff0c;右击转到槽&#xff0c;在该槽函数中&#xff0c;调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0…...

MySQL数据库管理(一)

目录 1.MySQL数据库管理 1.1 常用的数据类型​编辑 1.2 char和varchar区别 2. 增删改查命令操作 2.1 查看数据库结构 2.2 SQL语言 2.3 创建及删除数据库和表 2.4 管理表中的数据记录 2.5 修改表名和表结构 3.MySQL的6大约束属性 1.MySQL数据库管理 1.1 常用的数据类…...

Kafka使用教程和案例详解

Kafka 使用教程和案例详解 Kafka 使用教程和案例详解1. Kafka 基本概念1.1 Kafka 是什么?1.2 核心组件2. Kafka 安装与配置2.1 安装 Kafka使用包管理器(如 yum)安装使用 Docker 安装2.2 配置 Kafka2.3 启动 Kafka3. Kafka 使用教程3.1 创建主题3.2 生产消息3.3 消费消息3.4 …...

TGI模型- 同期群-评论文本

用户偏好分析 TGI 1.1 用户偏好分析介绍 要分析的目标&#xff0c;在目标群体中的均值 和 全部群体里的均值进行比较&#xff0c; 差的越多说明 目标群体偏好越明显 TGI&#xff08;Target Group Index&#xff0c;目标群体指数&#xff09;用于反映目标群体在特定研究范围内…...

ESP32 BLE学习(0) — 基础架构

前言 &#xff08;1&#xff09;学习本文之前&#xff0c;需要先了解一下蓝牙的基本概念&#xff1a;BLE学习笔记&#xff08;0.0&#xff09; —— 基础概念&#xff08;0&#xff09; &#xff08;2&#xff09; 学习一款芯片的蓝牙肯定需要先简单了解一下该芯片的体系结构&a…...

【JAVA】Java中Spring Boot如何设置全局的BusinessException

文章目录 前言一、函数解释二、代码实现三、总结 前言 在Java应用开发中&#xff0c;我们常常需要读取配置文件。Spring Boot提供了一种方便的方式来读取配置。在本文中&#xff0c;我们将探讨如何在Spring Boot中使用Value和ConfigurationProperties注解来读取配置。 一、函数…...

pdf.js实现web h5预览pdf文件(兼容低版本浏览器)

注意 使用的是pdf.js 版本为 v2.16.105。因为新版本 兼容性不太好&#xff0c;部分手机预览不了&#xff0c;所以采用v2版本。 相关依赖 "canvas": "^2.11.2", "pdfjs-dist": "^2.16.105", "core-js-pure": "^3.37.…...

SSID简介

一、 SSID 概念定义 SSID&#xff08;Service Set Identifier&#xff09;即服务集标识符。它是无线网络中的一个重要标识&#xff0c;用于区分不同的无线网络。 相当于无线网络的名称&#xff0c;用于区分不同的无线网络。用户在众多可用网络中识别和选择特定网络的依据。通…...

PS通过GTX实现SFP网络通信1

将 PS ENET1 的 GMII 接口和 MDIO 接口 通过 EMIO 方 式引出。在 PL 端将引出的 GMII 接口和 MDIO 接口与 IP 核 1G/2.5G Ethernet PCS/PMA or SGMII 连接&#xff0c; 1G/2.5G Ethernet PCS/PMA or SGMII 通过高速串行收发器 GTX 与 MIZ7035/7100 开发…...

前端面试项目细节重难点(已工作|做分享)(九)

面试官&#xff1a;请你讲讲你在工作中如何开发一个新需求&#xff0c;你的整个开发过程是什么样的&#xff1f; 答&#xff1a;仔细想想&#xff0c;我开发新需求的过程如下&#xff1a; &#xff08;1&#xff09;第一步&#xff1a;理解需求文档&#xff1a; 首先&#x…...

区间预测 | Matlab实现BP-ABKDE的BP神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现BP-ABKDE的BP神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现BP-ABKDE的BP神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BP-ABKDE的BP神经网络自适应带…...

抢占人工智能行业红利,前阿里巴巴产品专家带你15天入门AI产品经理

前言 当互联网行业巨头纷纷布局人工智能&#xff0c;国家将人工智能上升为国家战略&#xff0c;藤校核心课程涉足人工智能…人工智能领域蕴含着巨大潜力&#xff0c;早已成为业内共识。 面对极大的行业空缺&#xff0c;不少人都希望能抢占行业红利期&#xff0c;进入AI领域。…...

MEMS:Lecture 16 Gyros

陀螺仪原理 A classic spinning gyroscope measures the rotation rate by utilizing the conservation of angular momentum. 经典旋转陀螺仪通过利用角动量守恒来测量旋转速率。 Coriolis Effect and Coriolis Force 科里奥利效应是一种出现在旋转参考系中的现象。它描述了…...

如何建立自己的超市网站/厦门百度广告开户

1. IP数据报首部的固定部分中的各字段 ①版本&#xff1a;占4位&#xff0c;指IP协议的版本。通信双方使用的 IP协议版本必须一致。日前广泛使用的 IP协议版本号为 4 (即 IPv4)。 IPv6 目前还处于起步阶段。 ②首部长度&#xff1a;占 4 位&#xff0c;可表示的最大十进制数值是…...

网站建设jsp/seo是什么专业

今天和大家分享10个批量快速处理PPT 的技巧&#xff01;没错&#xff01;就是你想的“批发”处理~话不多说&#xff0c;赶紧一起来学习吧~一、批量提取PPT模板里的元素 在制作PPT的过程中&#xff0c;经常会遇到自己喜欢的模板&#xff01;可真正喜欢的是里面的素材&#xff0c…...

网站建设创意报告书/百度排名软件

內核所在目錄&#xff1a;/usr/src/linux/ Pacman系統更新相關&#xff1a;pacman -Su 升級系統中所有已經安裝的包&#xff1b;pacman -Syu 升級系統同步倉庫數據&#xff1b;pacman -Sc 清理當前未被安裝的軟件包之緩存&#xff08;/var/cache/pacman/pkg&#xff09;&#x…...

高要网站制作/如何在百度上发布自己的文章

如果电商企业想将业务提升到一个新的水平&#xff0c;则应考虑接入第三方快递查询API接口。快递查询API接口提供了很多好处&#xff0c;并且可以为电商企业、微商带来强大的竞争优势。因为相对于独立一家家对接各个快递公司的服务接口&#xff0c;这种第三方快递查询API接口支持…...

电子商务知名网站/网站优化推广方案

可能大家在使用DataGrid编辑数据的时候会觉得要点击最后的编辑列的按钮来修改数据不是很方便&#xff0c;在今天的例子中给出一种比较方便的操作方法&#xff1a;要修改数据点击这一行&#xff0d;》鼠标放在哪个文本框就会选中哪个文本框的内容&#xff0c;直接可以进行修改&a…...

石狮网站建设报价/石嘴山网站seo

1.查出占用端口的进程&#xff1a; 比如我要查找的8080&#xff0c;1099端口&#xff1a; netstat -ano|findstr 8080 netstat -ano|findstr 1099 12424就是我们所查进程的id,然后干掉它 taskkill -f -pid 12424...