第一次通过写博客,来总结知识......

最近遇见一些问题,今天来总结一下

  1. 当数据库表中,主键字段需从1开始自增,其他字段手动输入时,如何用Java代码实现(下面附Student表图与其结构图)
    //Student表图
    这里写图片描述

//结构图
这里写图片描述


      // 获取数据库连接的方法
    public static Connection getConn() throws ClassNotFoundException, SQLException {
        // 将驱动程序加载到内存
        Class.forName("com.mysql.jdbc.Driver");
        // // 创建数据库连接
        String url = "jdbc:mysql://localhost:3306/student";
        String user = "root";
        String password = "111111";
        Connection conn = DriverManager.getConnection(url, user, password);
        return conn;
    }

         // 保存学生信息
    public static void save(Student stude) throws ClassNotFoundException, SQLException {

        // 获取连接
        Connection conn = getConn();
        String sql = "insert into student(name,sex,age,telephone)values(?,?,?,?)";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setString(1, stude.name);// name
        ps.setString(2, stude.sex);// sex
        ps.setInt(3, stude.age);// age
        ps.setString(4, stude.telephone);// telephone
        ps.executeUpdate();

        ps.close();
        conn.close();

    }

2.根据name字段来删除学生,如果数据库中该name不存在,就提示:你输入的学生不存在;若存在则直接删除。

分析:我刚开始是这样想的,首先从数据库中查询Student表中是否存在这个name的值。用ResultSet对象来接收查询出来的结果,再用next()方法来判断其中是否有值,然后根据结果来判断是否执行delete语句。

代码如下:

// 删除学生信息
    public static void delete(String stuname) throws ClassNotFoundException, SQLException, IOException {

        // 获取连接
        Connection conn = getConn();
        try {
            String sql2 = "select * from student where name = '" + stuname + "'";
            PreparedStatement pst = conn.prepareStatement(sql2);
            // 结果集对象 查询数据
            ResultSet rs = pst.executeQuery();
            if (rs.next()) {

                String sql = "delete from student where name = '" + stuname + "'";
                PreparedStatement ps = conn.prepareStatement(sql);
                ps.executeUpdate(sql);
                System.out.println("提示:"+stuname +"的学生信息已经删除!");

            }else{
                System.out.println("你输入的学生不存在。");
            }

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

    }

//上面这个代码,是最基本的,但我感觉不够好,就找了优化的方法,果然被我找到了

其实PreparedStatement有个方法int executeUpdate(String sql); 它的返回值是可执行增,删,改,返回执行受到影响的行数。如果返回值为0,则证明该name不存在;返回值大于0,则存在可以直接删除,这样代码就简洁的多了.
executeUpdate方法

//代码如下

    // 删除学生信息 (优化后)
    public static void delete(String stuname) throws ClassNotFoundException, SQLException, IOException {
        try {
            // 获取连接
            Connection conn = getConn();
            String sql = "delete from student where name = '" + stuname + "'";
            PreparedStatement ps = conn.prepareStatement(sql);

            int count = ps.executeUpdate(sql);
            if (count > 0) {
                System.out.println("提示:" + stuname + "的学生信息已经删除!");
            } else {
                System.out.println("你输入的学生不存在。");
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值