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

第十七章 数据库操作

数据库基础  和JDBC概论和常用类和接口就不过多的说了  直接来到 数据库的操作 一开始是在数据库中插入了四个类型  两个int  两个varchar类型   再分别插入  名字   序号   号码   性别   然后再在java中操作增删改查 这几个操作  全部代码如下

package 第十七章;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
import com.mysql.cj.jdbc.Driver;
 
public class MysqlDemo1 {
    Connection connection;
    public static void main(String[] args) throws SQLException {
        // TODO Auto-generated method stub
        MysqlDemo1 mysqldemo1 = new MysqlDemo1();//new对象 调用方法
        mysqldemo1.getConnection();
        System.out.println("查询人员数据,结果为:");
        mysqldemo1.selectAll();
        System.out.println("新增人员数据,结果为:");
        mysqldemo1.add(11, "lanyangyang"," 17923412644","nan");
        mysqldemo1.add(12, "meiyangyang"," 17977556644","nv");
        mysqldemo1.add(13, "feiyangyang"," 11971236644","nan");
        mysqldemo1.selectAll();
        System.out.println("查询182开头的数据,结果为:");
        mysqldemo1.obscure();//查询课程表中的数据
        System.out.println("修改指定5位置上的电话号码");
        mysqldemo1.update(5,"13124235300");//修改该位置的数据
        mysqldemo1.selectAll();
        System.out.println("查询性别为nan的数据");
        mysqldemo1.man("nan");
        System.out.println("修改指定10位置上的名字");
        mysqldemo1.updatedate(10,"dashuaige");//修改该位置的数据
        mysqldemo1.selectAll();
        System.out.println("查询179开头的数据,结果为:");
        mysqldemo1.obscure1();//查询课程表中的数据
        mysqldemo1.selectAll();
        System.out.println("删除课程11,12,13");
        mysqldemo1.delete("11");//删除指定位置的数据
        mysqldemo1.delete("12");//删除指定位置的数据
        mysqldemo1.delete("13");//删除指定位置的数据
        mysqldemo1.selectAll();
        System.out.println("查询性别为woman的数据");
        mysqldemo1.man("nv");
    }
    public void  woman(String name  ) throws SQLException {//查询性别为女的数据
        PreparedStatement preparedstatement =connection.prepareStatement("select*from sudent where sex = ?;");
        preparedstatement.setString(1, name);
        ResultSet resultSet =preparedstatement.executeQuery() ;
        while(resultSet.next()) {
            System.out.print(resultSet.getInt("id")+" ");
            System.out.println(resultSet.getString("name"));
            System.out.println(resultSet.getString("tel"));
            System.out.println(resultSet.getString("sex"));
        }
        preparedstatement.close();
    }
    public void delete(String id) throws SQLException {//删除指定位置上的数据   
        PreparedStatement preparedStatement = connection.prepareStatement("delete from sudent where id = ?;");
        preparedStatement.setString(1, id);//
        //第四步  :执行SQL语句
        preparedStatement.executeUpdate();
        //第六步关闭接连释放资源
        preparedStatement.close();
    }
    public void obscure1() throws SQLException {//查询号码为179开头的号码
        PreparedStatement preparedstatement=connection.prepareStatement("select*from sudent where tel like'179%';");
        ResultSet resultSet = preparedstatement.executeQuery();//executeQuery只能用来查询    //新增修改删除都是使用另一种e
        //第五步:遍历结果集
        while(resultSet.next()) {
            System.out.print(resultSet.getInt("id")+" ");
            System.out.println(resultSet.getString("name")+" ");
            System.out.println(resultSet.getString("tel")+" ");
            System.out.println(resultSet.getString("sex")+" ");
        }
        preparedstatement.close();
    }
    public void updatedate(int id,String name) throws SQLException {//修改指定位置上的数据
        PreparedStatement preparedstatement =connection.prepareStatement("update sudent set name=?  where id=? ; ");
        preparedstatement.setString(1, name);
        preparedstatement.setInt(2, id);
        //第四步: 执行SOL语句
        preparedstatement.executeUpdate();
        //第六步: 关闭连接释放资源
        preparedstatement.close();
    }
    public void  man(String name  ) throws SQLException {//查询性别为男的数据
        PreparedStatement preparedstatement =connection.prepareStatement("select*from sudent where sex = ?;");
        preparedstatement.setString(1, name);
        ResultSet resultSet =preparedstatement.executeQuery() ;
        while(resultSet.next()) {
            System.out.print(resultSet.getInt("id")+" ");
            System.out.println(resultSet.getString("name"));
            System.out.println(resultSet.getString("tel"));
            System.out.println(resultSet.getString("sex"));
        }
        preparedstatement.close();
    }
    public void update(int id,String tel) throws SQLException {//修改指定位置上的号码
        PreparedStatement preparedstatement =connection.prepareStatement("update sudent set tel=?  where id=? ; ");//修改语句
        preparedstatement.setString(1, tel);//tel  电话
        preparedstatement.setInt(2, id);//id  序号
        //第四步: 执行SOL语句
        preparedstatement.executeUpdate();
        //第六步: 关闭连接释放资源
        preparedstatement.close();
    }
    public void obscure() throws SQLException {//使用mysql模糊查询来查询以182开头的数据
        PreparedStatement preparedStatement=connection.prepareStatement("select*from sudent where tel like'182%'");//使用的是mysql中的模糊查询语句
        ResultSet resultSet = preparedStatement.executeQuery();//executeQuery只能用来查询    //新增修改删除都是使用另一种e
        //第五步:遍历结果集
        while(resultSet.next()) {使用while循环来遍历表中四个类型
            System.out.print(resultSet.getInt("id")+" ");//id  序号
            System.out.println(resultSet.getString("name"));//name  名字
            System.out.println(resultSet.getString("tel"));//tel //电话
            System.out.println(resultSet.getString("sex"));//sex //性别
        }
    }
    public void add(int id ,String name,String tel , String sex) throws SQLException {//add添加数据
        PreparedStatement preparedStatement=connection.prepareStatement("insert into sudent values (?,?,?,?);");//向mysql数据库中指定的sudent表中添加数据
        preparedStatement.setInt(1, id);//添加id 序号
        preparedStatement.setString(2,name);//添加name//名字
        preparedStatement.setString(3,tel);//添加电话
        preparedStatement.setString(4,sex);//添加性别
        preparedStatement.executeUpdate();
        //第六步关闭接连释放资源
        preparedStatement.close();
    }
public void getConnection () throws SQLException{//注册驱动 连接mysql数据库  并遍历出表中的数据
    //第一步注册驱动
    DriverManager.registerDriver(new Driver());//注册驱动
    //第二步获取连接
    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/school_java","root","1234");//使java连接mysql数据库然后连接本地服务器  指定数据库和账号密码
}
public void selectAll() throws SQLException {//查询类  查询数据表中的数据
    //第三步:获取statement对象
    PreparedStatement preparedStatement=connection.prepareStatement("select * from sudent;");//查询语句
    //第四步:执行SQL语句返回结果集
    ResultSet resultSet = preparedStatement.executeQuery();//executeQuery只能用来查询    新增修改删除都是使用另一种executeUpdate
    //第五步:遍历结果集
    while(resultSet.next()) {//while循环数据库中的四个类型  id name  tel  sex  分别是 序列  名字  电话号码  和性别
        System.out.print(resultSet.getInt("id")+" ");
        System.out.println(resultSet.getString("name"));
        System.out.println(resultSet.getString("tel"));
        System.out.println(resultSet.getString("sex"));
    }
    //第六步:关闭连接释放资源
    resultSet.close();//关闭连接释放资源
    preparedStatement.close();
    
}
public void close() throws SQLException {
    connection.close();//最后关闭连接释放资源
}
}

 全部代码如上所示  接下来是详细的讲解

连接数据库  

主要是分为六个部分

第一步注册驱动
第二步获取连接
第三步:获取statement对象
第四步:执行SQL语句返回结果集
第五步:遍历结果集
第六步:关闭连接释放资源
然后呢 代码和注解如下

public void getConnection () throws SQLException{//注册驱动 连接mysql数据库  并遍历出表中的数据
    //第一步注册驱动
    DriverManager.registerDriver(new Driver());//注册驱动
    //第二步获取连接
    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/school_java","root","1234");//使java连接mysql数据库然后连接本地服务器  指定数据库和账号密码
}
public void selectAll() throws SQLException {//查询类  查询数据表中的数据
    //第三步:获取statement对象
    PreparedStatement preparedStatement=connection.prepareStatement("select * from sudent;");//查询语句
    //第四步:执行SQL语句返回结果集
    ResultSet resultSet = preparedStatement.executeQuery();//executeQuery只能用来查询    新增修改删除都是使用另一种executeUpdate
    //第五步:遍历结果集
    while(resultSet.next()) {//while循环数据库中的四个类型  id name  tel  sex  分别是 序列  名字  电话号码  和性别
        System.out.print(resultSet.getInt("id")+" ");
        System.out.println(resultSet.getString("name"));
        System.out.println(resultSet.getString("tel"));
        System.out.println(resultSet.getString("sex"));
    }
    //第六步:关闭连接释放资源
    resultSet.close();//关闭连接释放资源
    preparedStatement.close();
    
}

以上代码是 让java连接数据 然后遍历出指定的表中的内容  然后再主函数中new一个对象然后调用该方法就可以输出表中的内容  

模糊查询 

再是使用mysql数据库中的模糊查询  达到输入开头的号码如:182来查询号码182开头的号码的员工

代码如下

public void obscure() throws SQLException {//使用mysql模糊查询来查询以182开头的数据
        PreparedStatement preparedStatement=connection.prepareStatement("select*from sudent where tel like'182%'");//使用的是mysql中的模糊查询语句
        ResultSet resultSet = preparedStatement.executeQuery();//executeQuery只能用来查询    //新增修改删除都是使用另一种e
        //第五步:遍历结果集
        while(resultSet.next()) {使用while循环来遍历表中四个类型
            System.out.print(resultSet.getInt("id")+" ");//id  序号
            System.out.println(resultSet.getString("name"));//name  名字
            System.out.println(resultSet.getString("tel"));//tel //电话
            System.out.println(resultSet.getString("sex"));//sex //性别
        }
    }
然后再主函数中调用该方法就可以打印输出了

增删改

增删改都是使用mysql数据库中的语句   

主要如下 代码注解

删除
public void delete(String id) throws SQLException {//删除指定位置上的数据   
        PreparedStatement preparedStatement = connection.prepareStatement("delete from sudent where id = ?;");
        preparedStatement.setString(1, id);//
        //第四步  :执行SQL语句
        preparedStatement.executeUpdate();
        //第六步关闭接连释放资源
        preparedStatement.close();
    }
修改
public void updatedate(int id,String name) throws SQLException {//修改指定位置上的数据
        PreparedStatement preparedstatement =connection.prepareStatement("update sudent set name=?  where id=? ; ");
        preparedstatement.setString(1, name);
        preparedstatement.setInt(2, id);
        //第四步: 执行SOL语句
        preparedstatement.executeUpdate();
        //第六步: 关闭连接释放资源
        preparedstatement.close();
    }
添加
public void add(int id ,String name,String tel , String sex) throws SQLException {//add添加数据
        PreparedStatement preparedStatement=connection.prepareStatement("insert into sudent values (?,?,?,?);");//向mysql数据库中指定的sudent表中添加数据
        preparedStatement.setInt(1, id);//添加id 序号
        preparedStatement.setString(2,name);//添加name//名字
        preparedStatement.setString(3,tel);//添加电话
        preparedStatement.setString(4,sex);//添加性别
        preparedStatement.executeUpdate();
        //第六步关闭接连释放资源
        preparedStatement.close();
    }

然后再在主函数中调用就好了  

相关文章:

第十七章 数据库操作

数据库基础 和JDBC概论和常用类和接口就不过多的说了 直接来到 数据库的操作 一开始是在数据库中插入了四个类型 两个int 两个varchar类型 再分别插入 名字 序号 号码 性别 然后再在java中操作增删改查 这几个操作 全部代码如下 package 第十七章; import j…...

RTI-DDS代码分析使用介绍

DDS(Data Distribution Service数据分发服务)是对象管理组织OMG的有关分布式实时系统中数据发布的规范。 DDS规范采用了发布/订阅体系结构,但对实时性要求提供更好的支持。DDS是以数据为中心的发布/订阅通信模型。 以下工程基于rti_connext_dds-7.2.0 hello_world.…...

ant-design-vue 3 a-table保留选中状态

业务需求需要保留选中状态 <a-table class"satistic-table" :row-selection"{ selectedRowKeys: selectedRowKeys, onSelect:onSelect,onSelectAll:onSelectAll }" :row-key"(row)>{ return row.customerId}" :columns"columns"…...

golang 工程组件:grpc-gateway option自定义http规则

option自定义http规则和http body响应 简介 本篇接上文 golang 工程组件&#xff1a;grpc-gateway 环境安装默认网关测试 默认网关配置终究是难用&#xff0c;本篇介绍一下proto里采用option自定义http规则以及让网关返回http响应而不是我们定义的grpc响应 option定义http…...

亚马逊添加购物车和收藏有什么区别

亚马逊的添加购物车和收藏是两个不同的功能&#xff0c;它们在用户行为和用途上有明显的区别&#xff1a; 1、添加购物车&#xff08;Add to Cart&#xff09;&#xff1a; 当用户点击"添加到购物车"按钮时&#xff0c;所选商品将被放入他们的购物车&#xff0c;而…...

JAVA-编程基础-11-03-java IO 字节流

Lison <dreamlison163.com>, v1.0.0, 2023.05.07 JAVA-编程基础-11-03-java IO 字节流 文章目录 JAVA-编程基础-11-03-java IO 字节流字节输出流&#xff08;OutputStream&#xff09;FileOutputStream类**FileOutputStrea 的构造方法**使用文件名创建FileOutputStream…...

python之Cp、Cpk、Pp、Ppk

目录 1、Cp、Cpk、Pp、Ppk 2、python计算 1、Cp、Cpk、Pp、Ppk Cp Process Capability Ratio 可被译为“过程能力指数” Cpk Process Capability K Ratio 可被译为“过程能力K指数” Pp Process Performance Ratio 可被译为“过程绩效指数” Ppk Process Performance K Ra…...

统信uos 1030 企业版 安装.net core环境

安装.net core步骤 添加密钥和包存储库 安装 .NET 之前&#xff0c;请运行以下命令&#xff0c;将 Microsoft 包签名密钥添加到受信任密钥列表&#xff0c;并添加包存储库wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-mic…...

2023/10/23学习记录

1.VS2019中sln对应解决方案 修改sln的文件名&#xff0c;对应的解决方案名称也会变化。 2.如何修改生成的exe文件名呢&#xff1f; 属性--->杂项--->&#xff08;名称) 3.这是任务管理器&#xff0c;这里红色部分显示的是“这是文件描述”。 当通过属性查看详细信息的时…...

flask入门(四)前后端数据传输

文章目录 1、flask后端接收来自前端的数据1&#xff09;如果前端提交的方法为POST2&#xff09;如果前段提交的方法是GET 2、flask后端向前端传数据3、案例参考文献 1、flask后端接收来自前端的数据 1&#xff09;如果前端提交的方法为POST 后端接收时的代码&#xff1a; xx…...

JS——垃圾回收的原理

引言 JavaScript是一种高级的、解释型的编程语言&#xff0c;广泛应用于网页开发和移动应用开发中。在JavaScript中&#xff0c;内存管理是一个重要的话题&#xff0c;而垃圾回收就是内存管理的一部分。本文将介绍JavaScript垃圾回收的原理&#xff0c;并提供一些示例代码来帮助…...

Spring Cloud Gateway 路由构建器的源码分析

Spring Cloud Gateway 路由构建器的源码分析 文章目录 1. 路由构建器的入口2. 创建路由规则3. 设置路由规则和属性4. 路由过滤器的设置5. 构建和获取路由规则&#xff1a;6. 实例化路由构建器&#xff1a;8. 路由构建器的源码分析8.1 RouteLocator接口8.2 RouteLocatorBuilder…...

IT行业哪个方向比较好就业?

IT行业哪个方向比较好就业? IT行业里&#xff0c;哪些方向更好就业&#xff0c;这是一个很常见也很重要的问题。不同的IT方向有不同的技能要求、就业前景和发展空间&#xff0c;因此需要根据自己的兴趣、能力和目标来选择合适的方向。 软件开发与工程&#xff1a;软件开发是…...

uniapp中nvue页面使用fixed后,数据更改不更新到该视图。

解决方案&#xff1a;position: fixed;定位改成position: absolute; 记录一下&#xff0c;遇到这个贼离谱的问题&#xff0c;uniapp项目里的nvue页面因为要弄个引导蒙版&#xff0c;所以使用了fixed定位&#xff0c;点击蒙版关闭&#xff0c;加了this.$forceUpdate()也不行&am…...

力扣第55题 跳跃游戏 c++ 贪心 + 覆盖 加暴力超时参考

题目 55. 跳跃游戏 中等 相关标签 贪心 数组 动态规划 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &…...

系列十四、Redis的集群(一)

一、是什么 1.1、概述 由于数据量过大&#xff0c;单个master-slave模式难以承担&#xff0c;当出现master节点故障的一瞬间&#xff0c;哨兵重新选举新的master节点之前&#xff0c;这一小段时间将会导致Redis服务不可用&#xff0c;因此需要对多个master-slave主从复制集进行…...

红帽认证 | RHCE考试包括哪些内容?

Red Hat Certified Engineer&#xff08;RHCE&#xff09;考试是一项面向企业级系统管理员的认证考试&#xff0c;是认证Linux系统管理员技能的一种方式。 RHCE证书是Linux管理员领域中最受欢迎和最受认可的证书之一。 那RHCE考试都有哪些内容呢&#xff0c;一起来看看吧&…...

ASPICE标准快速掌握「3.1. 实践示例」

实践示例 本章内容是最重要的,建议慢下来跟着博主的思路一步一步前进 1. 示例背景说明 假设我们现在是一个Tier1的车窗控制软件开发商,我们给OEM提供软件解决方案 1.1. 本过程目标 根据客户、上级部门、安全团队与质量团队等提出的要求,本项目要求SYS.1过程达到ASPICE过…...

pytorch 训练可视化

pytorch 训练可视化 1.from torch.utils.tensorboard 1.from torch.utils.tensorboard from torch.utils.tensorboard import SummaryWriter在最新版本的pytorch中官方提供了tensorboard的api。以下是官方教程的链接 https://pytorch.org/tutorials/intermediate/tensorboard…...

webgis开发参考资料

一、ArcGIS相关 1、ArcGIS for Server 10.3.X 新型紧凑型缓存的解读和应用 http://zhihu.geoscene.cn/article/1038 2、arcgis server 紧促&#xff08;bundle&#xff09;格式缓存文件的读取 https://blog.csdn.net/abc553226713/article/details/8668839 3、ArcGIS 10.0紧…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 &#xff08;1&#xff09;使用Uniapp 3.8版本支持ArkTS编译 &#xff08;2&#xff09;通过uni-harmony插件调用原生能力 &#xff08;3&#xff09;分层架构设计&#xff1a; graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...