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

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

  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();
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Runtime.getRuntime.exec是Java中一个非常重要的方法,它可以用来执行系统命令。在本篇博客中,我们将深入了解这个方法的用法和注意事项。 使用方法 首先,我们需要知道如何使用Runtime.getRuntime.exec方法。以下是一个简单的示例,它创建了一个进程并执行了“ls”命令: ``` Process p = Runtime.getRuntime().exec("ls"); ``` 在这个例子中,我们使用了exec方法来创建了一个Process对象,它代表了一个新的进程。我们传递给exec方法的参数是一个字符串,它是需要执行的命令。在这个例子中,我们执行了“ls”命令,它会列出当前目录下的文件和文件夹。 注意事项 在使用Runtime.getRuntime.exec方法时,我们需要注意一些事项。以下是一些需要注意的事项: 1. Command参数需要完整路径或在环境变量中定义的命令名 如果我们要执行的命令不在环境变量中,我们需要指定完整路径或使用cd切换到相应的目录。例如,“/usr/bin/java”或“cd /usr/bin; java”。 2. 避免使用空格和特殊字符 如果执行的命令中包含空格或特殊字符,我们需要使用转义字符。例如,“ls -l /home/user/Documents”应该成“ls\ -l\ /home/user/Documents”。 3. 避免使用管道和重定向 我们应该尽量避免在exec方法中使用管道和重定向。如果必须使用,我们可以使用bash shell来执行命令。例如,“/bin/bash -c 'ls | grep .txt > file.txt'”。 4. 处理输出和错误流 我们可以使用Process对象的getInputStream方法来获取命令的输出流,并使用getOutputStream方法来获取命令的错误流。我们可以使用这些流来读取命令的输出和错误信息。 总结 Runtime.getRuntime.exec方法是一个非常强大的方法,它可以用来执行系统命令。但是,我们需要注意一些事项,例如避免使用空格和特殊字符,避免使用管道和重定向,并处理输出和错误流。如果正确使用,这个方法可以帮助我们完成很多系统级任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值