项目实训8——对数据库的表进行操作

本文介绍了如何使用JDBC进行数据库操作,包括在用户数据库中删除表及联动删除系统数据库中的相关记录,以及修改表名的详细步骤。强调了删除顺序的重要性,并展示了相关Mapper文件和Controller文件的代码实现。
摘要由CSDN通过智能技术生成

  上一篇博客讲到如何对表的字段进行操作,本篇将围绕使用JDBC对表的操作展开讨论。
  当管理员在用户数据库建立一张新表后,系统数据库会在DBid_charts表中插入一条新表的数据,包括表英文名、中文名和对表的描述,还会有一张新表DBid_Cid_meta表来存储该新表的字段信息。所以在删除用户数据库表的时候,还要注意同时删除系统数据库的DBid_charts表中关于被删除表的数据和DBid_Cid_meta表。
  删除用户数据库中的表要使用JDBC,连接用户数据库后执行sql语句drop table chartName同时删除表结构和数据。此方法设置删除成功就返回1。对系统数据库,即springboot项目通过application.properties文件进行连接的数据库,进行删表还是通过mapper文件操作数据库,其xml文件中的代码为:

    <!--删除表-->
    <update id="deleteSC" parameterType="int">
        drop table if exists #{DBId}_#{CId}_meta
    </update>

注意deleteSC的返回值为0!mybatis对删除操作的返回值由具体删除行数决定,drop操作直接删除表,就默认影响行数为0,所以返回为0,在对方法是否成功做出判断时要注意这一点。
  删除顺序非常重要!如果先删除DBid_charts表中的数据,则再进行之后操作时将无法获得表所在数据库的名字。因此要先删除用户数据库表,接着是字段表,最后才是DBid_charts表中的数据。controller文件中的删除方法代码如下:

    //删除表
    @RequestMapping("/deleteChart/{cid}/{bid}")
    public Map<String, Object> deleteChart(@PathVariable int cid,@PathVariable int bid) throws Exception {
        Map<String, Object> map = new HashMap<>();
        int sd = chartService.specificDelete(cid,bid);
        int msd = chartService.specificDChart(cid,bid);//返回值受涉及的行数影响
        int info = chartService.deleteChart(cid,bid);
        System.out.println("具体删除表:"+sd);
        System.out.println("具体删除表项表:"+msd);
        System.out.println("表所在数据库信息表的数据:"+info);
        if ((info > 0)&&(msd==0)&&(sd>0)) {
            map.put("state", true);
            map.put("msg", "删除成功!");
        } else {
            map.put("state", false);
            map.put("msg", "删除失败!");
        }
        return map;
    }

  修改表名时涉及用户数据库中的被修改表和系统数据库的DBid_charts表的该表数据项。用户数据库的表修改表名的操作比较简单,使用JDBC连接用户数据库后执行sql语句alter table chartName rename newName就可以了。对系统数据库中表的操作依旧通过mapper来实现,xml文件中相应的代码如下:

    <update id="updateChart" parameterType="com.example.server.domain.Chart">
        update #{DBId}_charts set CEN=#{Chart.EN},CCN=#{Chart.CN},CDes=#{Chart.Des}
        where id=#{Chart.id};
    </update>

controller文件中相应的代码如下:

    @PostMapping("/updateChart/{DBId}")
    public int updateChart(@RequestBody Chart nc,@PathVariable int DBId) throws Exception {
        int id=nc.getId();
        String nn=nc.getEN();
        int su = chartService.specificUpdate(id,DBId,nn);
        System.out.println("具体更改表名"+su);
        int i = chartService.updateChart(nc,DBId);

        return i;
    }

前端将更改过表数据以Chart对象的格式发回后端,表的新名就从Chart对象中获得。对表的其他信息进行的修改与用户数据库无关,只涉及系统数据库DBid_charts表的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值