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

来源:互联网 发布:变化中的中国网络零售 编辑:程序博客网 时间:2024/05/22 03:48

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

  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();        }    }
原创粉丝点击