Java面向对象—JDBC查询

基于Java的公共交通查询系统开发与实战 公共交通查询系统是一个典型的综合型Java应用,旨在为用户提供公交、地铁线路查询、换乘方案推荐、实时到站信息获取等核心功能。系统采用模块化设计,结合GUI界面、网络通信、数据库操作与算法优化等多方面技术,构建出一个功能完善、响应迅速的桌面应用。在技术选型上,本系统基于Java语言开发,利用其跨平台特性与丰富的类库支持,提升开发效率与系统稳定性。前端采用Swing或JavaFX实现用户交互界面;后端通过HttpURLConnection或OkHttp完成与公交API的网络通信; 阅读详情

JDBC查询

本小节主要介绍在jdbc中对各种查询的应用

一、简介

1、查询使用PreparedStatement中的executeQuery()方法执行,返回的数据时结果集,需要用ResultSet对象接收

2、可以使用getXX()方法把字段值从结果集中取出来

3、对实体类和BaseDao的封装:

public class Student {
    private int id;
    private  String name;
    private  String sex;
    private  int age;
​
    public Student() {
    }
​
    public Student(int id, String name, String sex, int age) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
​
    public int getId() {
        return id;
    }
​
    public void setId(int id) {
        this.id = id;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getSex() {
        return sex;
    }
​
    public void setSex(String sex) {
        this.sex = sex;
    }
​
    public int getAge() {
        return age;
    }
​
    public void setAge(int age) {
        this.age = age;
    }
}
public class BaseDao {
    protected Connection con;
    protected PreparedStatement pst;
    protected ResultSet rs;
    
    //打开连接的方法
    public void openCon() {
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/0501oop-jdbc",
                    "root", "root");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
        //3.写sql
        //4.创建PreparedStatement对象预处理
        //5、执行并返回结果
        //6、处理结果
​
    //关闭资源的方法
    public void closeAll(){
        //7.关闭连接
        try {
            if (rs!=null) {
                rs.close();
            }
            if (pst!=null) {
                pst.close();
            }
            if (con!=null) {
                con.close();
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

二、查询全部数据

public class Methods extends BaseDao{
    //查询全部数据的方法
    public List<Student> selectAll(){
        List<Student> list=null;
        openCon();
        String sql="select * from student";
        try {
            pst=con.prepareStatement(sql);
            rs=pst.executeQuery();
            list=new ArrayList<Student>();
            while(rs.next()){
                Student stu=new Student();
                stu.setId(rs.getInt("id"));
                stu.setName(rs.getString("name"));
                stu.setSex((rs.getString("sex")));
                stu.setAge(rs.getInt("age"));
                list.add(stu);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            closeAll();
        }
        return list;
    }
}
public static void main(String[] args) {
    Methods m=new Methods();
    System.out.println("-------查询全部-------");
    List<Student> list=m.selectAll();
    for (Student stu:list) {
        System.out.println(stu.getId()+"\t"+stu.getName()+
                "\t"+stu.getSex()+"\t"+stu.getAge());
    }
}

三、通过ID查询

public class Methods extends BaseDao{
    //通过id查询数据,返回集合
    public List<Student> selectById(int i){
        List<Student> list=null;
        openCon();
        String sql="select * from student where id=?";
        try {
            pst=con.prepareStatement(sql);
            pst.setInt(1,i);
            rs=pst.executeQuery();
            list=new ArrayList<Student>();
            while(rs.next()){
                Student s=new Student();
                s.setId(rs.getInt("id"));
                s.setName(rs.getString("name"));
                s.setSex(rs.getString("sex"));
                s.setAge(rs.getInt("age"));
                list.add(s);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            closeAll();
        }
        return list;
    }
    //通过id查询,返回对象
    public Student selectById01(int i){
        Student s=null;
        openCon();
        String sql="select * from student where id=?";
        try {
            pst=con.prepareStatement(sql);
            pst.setInt(1,i);
            rs=pst.executeQuery();
            while(rs.next()){
                s=new Student();
                s.setId(rs.getInt("id"));
                s.setName(rs.getString("name"));
                s.setSex(rs.getString("sex"));
                s.setAge(rs.getInt("age"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            closeAll();
        }
        return s;
    }
}
public static void main(String[] args) {
    System.out.println("--------通过id查询,返回集合-------");
    //Student s=new Student(3,"张三","男",12);
    //list=m.selectById(s);
    list=m.selectById(3);
    for (Student stu:list) {
        System.out.println(stu.getId()+"\t"+stu.getName()+
                "\t"+stu.getSex()+"\t"+stu.getAge());
    }
    System.out.println("-------通过id查询,返回对象------");
    Student stu=m.selectById01(3);
    System.out.println(stu.getId()+"\t"+stu.getName()+
            "\t"+stu.getSex()+"\t"+stu.getAge());
}

四、模糊查询

public class Methods extends BaseDao{
    //模糊查询,返回集合                 //传给模糊值更合理
    public List<Student> selectByLike(Student student){
        List<Student> list=null;
        openCon();
        String sql="select * from student where name like ? or sex like ?";
        try {
            pst=con.prepareStatement(sql);
            pst.setString(1,"%"+student.getName()+"%");
            pst.setString(2,"%"+student.getSex()+"%");
            rs=pst.executeQuery();
            list=new ArrayList<Student>();
            while(rs.next()){
                Student s=new Student();
                s.setId(rs.getInt("id"));
                s.setName(rs.getString("name"));
                s.setSex(rs.getString("sex"));
                s.setAge(rs.getInt("age"));
                list.add(s);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            closeAll();
        }
        return list;
    }
}
public static void main(String[] args) {
    System.out.println("------模糊查询,返回集合------");
    Student s=new Student(3,"王","男",12);
    list=m.selectByLike(s);
    for (Student student:list) {
        System.out.println(student.getId()+"\t"+student.getName()+
                "\t"+student.getSex()+"\t"+student.getAge());
    }
}

五、分页查询

public class Methods extends BaseDao{
    //分页查询,返回集合
    public List<Student> selectByLimit(int a,int b){
        List<Student> list=null;
        openCon();
        String sql="select * from student limit ?,?";
        try {
            pst=con.prepareStatement(sql);
            pst.setInt(1,a);
            pst.setInt(2,b);
            rs=pst.executeQuery();
            list=new ArrayList<Student>();
            while(rs.next()){
                Student s=new Student();
                s.setId(rs.getInt("id"));
                s.setName(rs.getString("name"));
                s.setSex(rs.getString("sex"));
                s.setAge(rs.getInt("age"));
                list.add(s);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            closeAll();
        }
        return list;
    }
}
public static void main(String[] args) {
    System.out.println("--------分页查询---------");
    list=m.selectByLimit(0,3);
    for (Student student:list) {
        System.out.println(student.getId()+"\t"+student.getName()+
                "\t"+student.getSex()+"\t"+student.getAge());
    }
}
MTK Linux DRM分析(八)- KMS drm_crtc.c CRTC 在 Linux DRM 子系统中是显示控制的核心,负责时序生成、模式设置和管线的调度。理解其工作原理和 API 对于进行底层图形开发、调试显示问题或 simply understanding how your graphics stack works 都至关重要。 阅读详情

相关推荐

全网最详细单细胞保姆级分析教程(一) ---pbmc

通过观察热图,可以了解不同细胞在主成分上的分布情况,以及主成分与细胞特征之间的关系。数据归一化是数据分析中的常见步骤,旨在消除数据集中不同特征之间的量纲差异,并使它们在相同的尺度上进行比较。函数会根据指定的主成分维度计算数据点之间的距离,并找到每个数据点的邻居。函数会根据数据点之间的相似性将其分组到不同的聚类中。数据缩放是数据分析中的常见步骤,旨在将数据的特征值调整到相似的范围,以避免某些特征对分析结果的过度影响。通过可视化维度载荷,可以了解哪些特征对主成分的形成起到了重要作用,以及不同特征之间的相关性。

ZxVSaccount的博客 6703

【Java 进阶篇】JDBC查询操作详解

本篇博客介绍了如何使用JDBC进行查询操作的基本步骤,包括连接数据库、创建查询语句、执行查询操作和处理结果集。希望这些示例能够帮助你更好地理解和使用JDBC进行数据库查询操作。在实际开发中,你可以根据自己的需求和数据库类型来编写相应代码,来完成自己的需求。

繁依Fanyi的博客 8116

新手也能玩转!用Panosim+MATLAB/Simulink搭建你的第一个智能驾驶仿真场景(保姆级图文)

本文为新手提供了使用Panosim和MATLAB/Simulink搭建智能驾驶仿真场景的详细教程。从环境准备、基础场景创建到仿真模型构建,一步步指导用户完成第一个智能驾驶仿真项目,帮助零基础用户快速上手并体验智能驾驶仿真的乐趣。

weixin_29090089的博客 179

Java的JDBC

jdbc

蓝影铁哥的博客 793

Excel VBA | 一键批量生成对账单

根据对账单总表一键批量生成N家独立的客户对账单。

Microgoblins的博客 6982

机场数据治理系列介绍(1):机场行业数据中台中的数据管理顶层设计方案

民航机场行业的数据中台中,有关数据管理顶层设计方案需要结合机场行业的业务特点和技术需求进行具体的设计,今日我们简要考量设计提供一个参考方案:

机场信息系统研究员的专栏 1604

Java之Jdbc使用详解( 最新!)

JDBC(数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

架构师小吴的博客 1608

ROS 2 Humble + Gazebo Fortress 搭建AGV小车仿真环境(保姆级避坑指南)

本文详细介绍了如何使用ROS 2 Humble和Gazebo Fortress搭建AGV小车仿真环境,包括环境准备、URDF模型构建、ROS 2控制集成、传感器配置等关键步骤。特别针对Gazebo Fortress版本差异提供了保姆级避坑指南,帮助开发者快速解决常见问题并优化性能。

weixin_29044157的博客 198

JDBC进阶——用java类实现查询

实现用JAVA类来对数据库进行增删改的功能,接下来我们将实现查询功能

Alcaibur的博客 1004

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 392

关于IBV_WR_RDMA_WRITE_WITH_IMM的理解

对于IBV_WC_RECV_RDMA_WITH_IMM的描述是这样的,也就是说并不需要sge,所以下发的sge,可以是NULL,个数可以是0。(1)需要下发post_recv,但是下发是post_recv当中的sge的地址可以是空,sge个数可以是0。伪代码,实际的rkey和addr已经通过socket交换。并且poll_cq时,有返回,在这篇文章当中对于poll_cq时,主要区别点有两个,这个是对于接收端而言。(2)可以带即时数据,

qq_38158479的博客 2418

JAVA-JDBC操作查询数据库

public class MyTest { public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { //1.加载驱动 Class.forName("com.mysql.cj.jdb.

qq_22535281的博客 3284

季节性注意力的时间序列预测模型 SAITS 进行数据补齐 完整代码数据

季节性注意力的时间序列预测模型 SAITS 进行数据补齐 完整代码数据

1071

java面向对象jdbc查询

【代码】java面向对象jdbc查询。

switcheddff的博客 37

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java JDBC入门之五:以面向对象的思想编写JDBC程序

Java JDBC入门之五:以面向对象的思想编写JDBC程序一、 思想二、代码 一、 思想 传入一个对象的形式去执行插入,现在使用的是拼接SQL字符串的方法,后面改进,使用占位符的方法。 通过拼接SQL去查询信息 二、代码 测试代码 public class JDBCTest { @Test public void testGetStudent() { //1. 得到查询的类...

码农回顾 473

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java复习宝典,jdbc与mysql数据库

例如:学校的高校图书管理:图书馆有包含图书信息的数据库,该数据库拥有借阅者信息,图书信息,借书信息等,通过该数据库图书管理员可以查找借阅者的信息,借阅者可以查询借阅图书的信息等,还有公司员工数据库等。数据库(DBMS)是为了方便数据的存储和管理,它将数据按照特定的 规则存储在磁盘上,就是一个存储数据的仓库。简单来说数据库就是用来存储信息的仓库,但是存储的信息不是乱存,而是通过建立关系表,通过各关系表来存储信息,删除信息,查找信息等。

2301_77721901的博客 1163

以面向对象的思想实现数据表的添加和查询,JDBC代码超详细

以面向对象的思想编写JDBC程序,实现使用java程序向数据表中添加学生信息,并且可以实现给定身份证号查询学生信息或给定准考证号查询学生信息。 创建的数据表如下: CREATE TABLE EXAMSTUDENT( FlowID INTEGER, Type INTEGER, IDCard VARCHAR(18), ExamCard VARCHAR(15), ...

weixin_40273144的博客 225

[转载]使用JDBC创建数据库对象

使用JDBC创建数据库对象摘要 本文分析了Java DataBase Connectivity (JDBC),一个在 Java 中以面向对象的方法来连接数据库的技术。它是对 ODBC API 进行的一种面向对象的封装和重新设...

congji3817的博客 442

Atitit oodbms的查询,面向对象的sql查询jpa jpql hql

Atitit oodbms的查询,面向对象的sql查询jpa jpql hql   1.1. 标准API历史1 1.2. JPA定义了独特的JPQL(Java Persistence Query Language) 可媲美JDBC的查询能力  1 1.3. 操作api1 1.4. Hql2   1.1. 标准API历史 该标准被纳入因此标准的每一步中JPA的规范通知所有版本

attilax的专栏 602

JavaOOP JDBC查询

创建一个Querys类,存放方法,与增删改不同的是,查询运用了PreparedStatement中的.executeQuery()方法,返回的数据是结果集,但是需要使用ResultSet对象接收。以上是对BaseDao的,我们将重复且不会改变的3个步骤,加载驱动,创建连接和关闭连接进行封装,分为两个方法,openCon()和closeAll(),接下来直接让类继承BaseDao即可。首先,对步骤进行简化,将确定不会改变的部分进行封装,免去重复书写,也就是对实体类和BaseDao进行封装。

m0_74472493的博客 36

JDBC对数据库进行增删改查【面向对象版】

写在前面的话: 参考资料:尚硅谷视频 本章内容:使用面向对象的思想,进行对数据库的增删改查 IDE:eclipse JDK:Java8 MySQL:mysql Ver 8.0.26 for Win64 on x86_64

qq_56402474的博客 702

JDBC:随机查询DEMO

本文展示了一个Java JDBC随机查询示例,通过创建可滚动且可更新的ResultSet实现对数据库记录的随机访问和修改。

博风_刺耳的博客(网络记事本) 675

java dao层最好的框架_什么样的Java DAO层最适合我们的项目

回顾和比较最流行的java数据库访问框架有许多方法可以将您的Java应用程序连接到数据库。这篇文章里,我将解释哪个框架最适合我们的项目需求。可比技术JDBC (Java database connectivity).JOOQ (Java Object Oriented Querying).MyBatis.Hibernate.Spring Data.JDBC:简单数据库查询获取数据的最简单方法是使用...

weixin_39868414的博客 842

java软件工程师基础面试题_Java软件工程师综合面试题

1.重写和重载的区别:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被”屏蔽”了...

weixin_29994499的博客 123

使用JDBC创建数据库对象

摘要 本文分析了Java DataBase Connectivity (JDBC),一个在 Java 中以面向对象的方法来连接数据库的技术。它是对 ODBC API 进行的一种面向对象的封装和重新设计,它易于学习和使用,并且它能够使您编写不依赖供应商的代码,用以查询和操纵数据库。JDBC 提供了一些相当低层的方法来存取数据库,同时也在相当高层提供了功能强大的对象来处理数据库。 什么是数据库? 数据

303

hibernate与jdbc

二者的的关系: JDBC是java应用程序连接数据库,进行数据存取的一种机制,是一组用java语言编写的类和接口的API,它和数据库之间由各个厂商提供的数据库驱动进行关联。 Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App  Server,和EJB没有什么必然的联系 相同点: 两者都是 JAVA 的数据库操作中间件。  

xh2的专栏 533

Java知识梳理之JDBC与JPA

 JDBC:JDBC提供一种接口,它是由各种数据库厂商提供类和接口组成的数据库驱动,为多种数据库提供统一访问。我们使用数据库时只需要调用JDBC接口就行了。 JDBC的用途:与数据库建立连接、发送 操作数据库的语句并处理结果。    JPA是Java持久层API。它是对java应用程序访问ORM(对象关系映射)框架的规范。为了我们能用相同的方法使用各种ORM框架。 JPA用途:简化...

orz024572的博客 358
上一篇: Java面向对象—JDBC
下一篇: Java面向对象—MVC分层
得闲饮茶呃
博客等级 码龄4年 303粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值