iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java中JDBC增删改查操作详解
  • 219
分享到

java中JDBC增删改查操作详解

2024-04-02 19:04:59 219人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言一、增删改操作1.1 PreparedStatement介绍 1.2 增删改操作  1.3 测试二、查操作2.1 通用对不同表进行一条数据查询操作2.2 通用对不同表进行多条

前言

        在上一篇博客我们介绍了JDBC的概念以及连接数据库的五种方式JDBC概述及数据库连接方式(数据库连接方式推荐使用第五种),那么我们既然连接上数据库了,那就要对数据进行操作了,那么这一篇我们就来介绍常规的增删改 查操作。

     

我们先看一遍步骤:    

这里不推荐使用Statement,两个原因:

                1.存在拼串操作,繁琐。

                2.存在sql注入问题。

        那我们使用谁来代替Statement呢?

一、增删改操作

        操作前,我们先解决上面的问题,我们使用PreparedStatement来代替Statement。

1.1 PreparedStatement介绍

可以通过调用 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStatement 对象

PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句

PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示,调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数. setXxx() 方法有两个参数,第一个参数是要设置的 SQL 语句中的参数的索引(从 1 开始),第二个是设置的 SQL 语句中的参数的值

 优点:

解决字符串拼串问题,防止sql注入提高性能       

 1.2 增删改操作

        这里给出一个针对不同表的通用增删改操作,拿着直接用就可以了。


//通用增删改操作
    public boolean updateInfo(String sql,Object...args){
        Connection conn = null;
        PreparedStatement ps = null;
        boolean b = true;
        try {
            //1.建立连接
            conn = JDBCUtils.getConnection();
            //2.预编译sql语句
            ps = conn.prepareStatement(sql);
            //3.填充占位符
            for (int i = 0; i <args.length ; i++) {
                ps.setObject(i+1,args[i]);
            }
            //4.执行操作
            b = ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //5.关闭资源
            JDBCUtils.close(conn,ps);
        }
        return b;
    }

         是不是复制使用会报错,这是因为博主把数据库连接和关闭资源也封装成了一个类JDBCUtils

        下面给出这个类的具体代码:

        配置文件就自己写吧,毕竟每个人的数据库都不一样。以及该导入的包自己动动手就行了。


public class JDBCUtils {
    //连接
    public static Connection getConnection(){
        Connection conn = null;
        try {
            //1.加载配置文件
            InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
            Properties prop = new Properties();
            prop.load(is);
 
            //2.读取配置文件
            String user = prop.getProperty("user");
            String passWord = prop.getProperty("password");
            String url = prop.getProperty("url");
            String driverClass = prop.getProperty("driverClass");
 
            //3.加载驱动
            Class.forName(driverClass);
 
            //4.建立连接
            conn = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
 
        return conn;
    }
 
    //关闭
    public static void close(Connection conn, PreparedStatement ps){
        try {
            if (conn != null){
                conn.close();
            }
            if (ps != null){
                ps.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //关闭带resultset
    public static void close(Connection conn, PreparedStatement ps , ResultSet rs){
        try {
            if (conn != null){
                conn.close();
            }
            if (ps != null){
                ps.close();
            }
            if (rs != null){
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

  1.3 测试

        我们来测试一下上面的代码

        这里有一张order表,里面有初始数据:

        ​​​​​​​        

         然后我们通过上面提供的方法给他增加一条数据:


public class Test {
    public static void main(String[] args) {
        Operation operation = new Operation();
        String insertSql = "INSERT INTO `order`(order_id,order_name,order_date) VALUES (?,?,?)";
        boolean b = operation.updateInfo(insertSql, 3, "CC", new Date(12312132));
        if (!b){
            System.out.println("操作成功!");
        }else {
            System.out.println("操作失败!");
        }
    }
}

        控制台打印输出:

        

         那么是不是已经插入成功了呢,我们去数据库中看一下:

          我们 SELECT * FROM `order`;

        

        看来我们确实成功了!所以我们给出的方法还是没有问题。

二、查操作

        接下来我们就是查操作了。

2.1 通用对不同表进行一条数据查询操作


public  <T> T doQuery(Class<T> clazz,String sql,Object...args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //1.建立连接
            conn = JDBCUtils.getConnection();
            //2.预编译sql语句
            ps = conn.prepareStatement(sql);
            //3.填充占位符
            for (int i = 0; i <args.length ; i++) {
                ps.setObject(i+1,args[i]);
            }
            //4.得到结果集ResultSet
            rs = ps.executeQuery();
            //5.得到结果集元数据
            ResultSetMetaData rsdm = rs.getMetaData();
 
            //6.通过rs得到列值,rsdm得到列名和列数
            //得到列数
            int columnCount = rsdm.getColumnCount();
            if (rs.next()){
                T t = clazz.getDeclaredConstructor().newInstance();
                for (int i = 0; i <columnCount ; i++) {
                    //得到列值
                    Object columnvalue = rs.getObject(i + 1);
                    //得到列的别名
                    String columnLabel = rsdm.getColumnLabel(i + 1);
 
                    //通过反射给对象赋值
                    Field field = clazz.getDeclaredField(columnLabel);
                    //暴力反射
                    field.setAccessible(true);
                    field.set(t,columnvalue);
                }
                return t;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            JDBCUtils.close(conn,ps,rs);
        }
        return null;
    }

        老样子,测试!


public class Test {
    public static void main(String[] args) {
        Operation operation = new Operation();
        String sql = "SELECT order_id orderId,order_name orderName,order_date orderDate FROM `order` WHERE order_id = ?;";
        Order order = operation.doQuery(Order.class, sql, 2);
        System.out.println(order);
    }
}

 控制台输出:

        

2.2 通用对不同表进行多条数据查询操作


public <T> List doQueryMore(Class<T> clazz,String sql,Object...args){
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //1.建立连接
            conn = JDBCUtils.getConnection();
            //2.预编译sql语句
            ps = conn.prepareStatement(sql);
            //3.填充占位符
            for (int i = 0; i <args.length ; i++) {
                ps.setObject(i+1,args[i]);
            }
            //4.得到结果集ResultSet
            rs = ps.executeQuery();
            //5.得到结果集元数据
            ResultSetMetaData rsdm = rs.getMetaData();
 
            //6.通过rs得到列值,rsdm得到列名和列数
            //得到列数
            int columnCount = rsdm.getColumnCount();
            //创建集合
            ArrayList<T> list = new ArrayList<>();
            while (rs.next()){
                T t = clazz.getDeclaredConstructor().newInstance();
                for (int i = 0; i <columnCount ; i++) {
                    //得到列值
                    Object columnvalue = rs.getObject(i + 1);
                    //得到列的别名
                    String columnLabel = rsdm.getColumnLabel(i + 1);
 
                    //通过反射给对象赋值
                    Field field = clazz.getDeclaredField(columnLabel);
                    //暴力反射
                    field.setAccessible(true);
                    field.set(t,columnvalue);
                }
                list.add(t);
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            JDBCUtils.close(conn,ps,rs);
        }
        return null;
    }

         这一个测试就交给各位吧!

总结

到此这篇关于java中JDBC增删改查操作详解的文章就介绍到这了,更多相关java JDBC增删改查内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java中JDBC增删改查操作详解

本文链接: https://www.lsjlt.com/news/160019.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中JDBC增删改查操作详解
    目录前言一、增删改操作1.1 PreparedStatement介绍 1.2 增删改操作  1.3 测试二、查操作2.1 通用对不同表进行一条数据查询操作2.2 通用对不同表进行多条...
    99+
    2024-04-02
  • java中如何实现JDBC增删改查操作
    小编给大家分享一下java中如何实现JDBC增删改查操作,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!     我们先看一遍步骤:    这里不推荐使用...
    99+
    2023-06-22
  • MySQL的增删改查操作详解
    MySQL是一种功能强大且广泛使用的关系型数据库管理系统,它提供了一系列的增删改查(CRUD)操作,使得我们可以轻松地对数据库进行数据的读写和管理。 本文将详细介绍MySQL的增加(INSER...
    99+
    2023-10-02
    mysql 数据库
  • Java用jdbc连接实现对MySQL增删改查操作
      目录 前言 1.新建项目 2.添加jar包 3.jdbc的连接 4、简单的MySQL增删改查操作 前言 大家好,我是ice三分颜色。个人主页:ice三分颜色的博客 本文用的Idea演示主要讲了如何用idea完成jdbc连接,Ja...
    99+
    2023-09-06
    mysql jdbc java 数据库 sql
  • SpringDataJPA详解增删改查操作方法
    目录1、服务层调用dao继承的接口中的方法2、使用jpql语句进行查询3、可以引入原生的sql语句4、根据jpa规定的特殊命名方法完成查询5、动态查询1、服务层调用dao继承的接口中...
    99+
    2024-04-02
  • MyBatis增、删、改、查(多表查询)操作详解
    MyBatis增、删、改、查操作 1. 增加用户操作(insert标签),返回受影响的行数.1.1 返回自增id 2. 修改用户操作(update)3. 删除用户操作(delete)4. ...
    99+
    2023-09-24
    mybatis mysql spring 数据库 spring boot
  • Java连接 JDBC基础知识(操作数据库:增删改查)
    目录一、JDBC简介二、JDBC使用详解1、打通数据库2、搭建模型层3、搭建模型层——CRUD操作4、搭建控制层5、搭建视图层三、JDBC总结一、JDBC简介 JDBC是连接java...
    99+
    2024-04-02
  • SpringDataJpa:JpaRepository增删改查操作
    Jpa查询 1. JpaRepository简单查询 基本查询也分为两种,一种是spring data默认已经实现,一种是根据查询的方法来自动解析成SQL。 预先生成方法 spri...
    99+
    2024-04-02
  • MySQL中增删改查操作与常见陷阱详解
    目录本文导读一、mysql的增删改查1、insert语句2、delete语句3、update语句原理4、select二、15种MySQL数据操作语句1、REPLACE语句2、CALL语句3、TABLE语句4、W...
    99+
    2024-04-02
  • Python+Xml +操作+增删改查
    由于小编的系统需要进程间通信,想通过对Xml文件操作,来进行信息交互,于是写了一组相关的类。 xml文件: <xml version='1.0' encoding='utf-8'> <flags> ...
    99+
    2023-01-31
    操作 Python Xml
  • JavaScala实现数据库增删查改操作详解
    目录添加jar包添加数据方法一方法二删除数据查询数据修改数据完整代码MysqlUtil代码MysqlDemo代码添加jar包 这里的Scala不是maven工程所以要找到项目结构(快...
    99+
    2023-05-14
    Java数据库增删查改 Java Scala增删查改数据库
  • Java使用jdbc连接实现对MySQL增删改查操作的全过程
    目录1.新建项目2.添加jar包3.jdbc的连接4.简单的MySQL增删改查操作总结1.新建项目 新建一个项目,fileànewàproject如下图:...
    99+
    2023-03-06
    jdbc连接mysql数据库增删改查代码 jdbc对数据库增删改查 java中jdbc连接数据库
  • MySQL表的操作『增删改查』
    ✨个人主页: 北 海 🎉所属专栏: MySQL 学习 🎃操作环境: CentOS 7.6 阿里云远程服务器 🎁软件版本: MySQL 5.7.44 文章目录 1.创建表1.1...
    99+
    2023-12-22
    mysql 数据库
  • PandasDataFrame操作数据增删查改
    目录一、DataFrame数据准备二、增删改查操作1,增2,查3,改4,删一、DataFrame数据准备 增、删、改、查的方法有很多很多种,这里只展示出常用的几种。 参数inplac...
    99+
    2024-04-02
  • 【Java 进阶篇】JDBC查询操作详解
    在数据库编程中,查询是一项非常常见且重要的操作。JDBC(Java Database Connectivity)提供了丰富的API来执行各种类型的查询操作。本篇博客将详细介绍如何使用JDBC进行查询操作,包括连接数据库、创建查询语句、执行...
    99+
    2023-12-23
    java 开发语言 sql mysql 数据库 git windows
  • sqlserver 中如何实现增删改查操作
    本篇文章给大家分享的是有关sqlserver 中如何实现增删改查操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一 Insert 语句1.在...
    99+
    2024-04-02
  • mongodb中怎么实现增删改查操作
    这篇文章给大家介绍mongodb中怎么实现增删改查操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一: Insert操作上一篇也说过,文档是采用“K-V”格式存储的,如果大...
    99+
    2024-04-02
  • vue中怎么实现增删改查操作
    vue中怎么实现增删改查操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体内容如下我们把这些用户信息保存到list的数组中,然后增删改查就...
    99+
    2024-04-02
  • django_数据库操作—增、删、改、查
    增加 增加数据有两种方法 1> sava >>> from datetime import date >>> book = BookInfo( btitle='西游记', bpub...
    99+
    2023-01-31
    操作 数据库
  • 浅析html的增删改查操作
    随着互联网的发展,HTML已成为网站开发的重要语言之一。HTML的增删改查是Web开发过程中的关键环节之一,本文将介绍HTML的增删改查操作。一、HTML的增加操作HTML的增加主要涉及三个方面:标签、属性和内容。在编辑HTML文档时,我们...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作