idea控制台实现部分sql语句

在此之前。我们需要知道如何连接数据库

JDBC操作数据库的步骤

1.首先在项目根目录创建l文件夹,放入jdbc驱动程序,然后Add As Library
2.使用驱动管理器来获得连接—获得一个数据库连接对象Connection
3.使用Connection创建PreparedStatement语句对象
4.使用PreparedStatement对象执行SQL语句(executeQuery())
5.然后返回执行结果

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

    public class JDBCUTILS {

        private static DataSource dataSource;

        static {
            InputStream stream1 = null;
            Properties properties = null;
            try {
                stream1 = JDBCUTILS.class.getClassLoader().getResourceAsStream("jdbc.properties");
                properties = new Properties();
                properties.load(stream1);
                dataSource = DruidDataSourceFactory.createDataSource(properties);
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    stream1.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        //通过此方法获得Connection对象
        public static Connection getConnection(){
            Connection connection = null;
            try {
                connection =  dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return connection;
        }


        //关闭资源
        public static void closeAll(Connection con, PreparedStatement statement1, ResultSet set1){
            if(con != null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(statement1 != null){
                try {
                    statement1.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(set1 != null){
                try {
                    set1.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

        public static void closeAll(Connection con, PreparedStatement statement1){
            if(con != null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(statement1 != null){
                try {
                    statement1.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }

以上是将连接数据和释放资源进行封装,写成方法。后面调用方法即可使数据库连接成功,可以进行下一步操作。

1.select语句

String sql = "select * from student";//查询语句
        PreparedStatement pstm = con.prepareStatement(sql);
        //.使用PreparedStatement对象执行SQL语句
        ResultSet rs = pstm.executeQuery();
        //定义集合用来装Emp对象
        List<emp> arr = new ArrayList<>();
        //通过循环将查询到的写进集合中
        while (rs.next()) {
            //根据字段名称获取表中的数据
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");
            //把数据封装到Emp对象中
            Emp empt = new Emp();
            //一行数据就封装成了一个emp对象
            emp.setid(id);
            emp.setname(name);
            emp.setage(age);
            //把当前行封装后的Emp对象装载到List集合中
            arr.add(emp);
        }
        //输出结果
        System.out.println(arr);
        //进行判断,关闭资源
        if (rs != null) {
            rs.close();
        }
        if (pstm != null) {
            pstm.close();
        }
        if (con != null) {
            con.close();
        }
 
    }

2.Insert语句

//新增语句
       String sql = "insert into emp(id,name,age) values (?,?,?)";
        PreparedStatement pstm = con.prepareStatement(sql);
        //传入数据
        Emp emp = new Emp();
         //此处的参数也可以设置为在手动输入的数据
        emp.setid(5);
        emp.setname("张三");
        emp.setage(18);
        //预处理对象的sql语句有?所以需要进行传参
        pstm.setObject(1,emp.setid());
        pstm.setObject(2,emp.setname());
        pstm.setObject(3,emp.setage());
        //执行更新(增删改查都叫做数据库的更新,更新返回的是影响的行数)
        int n = pstm.executeUpdate();
        //6.判断影响的行数n>0表示插入成功,否则插入失败
        if(n>0){
            System.out.println("插入数据成功");
        }else{
            System.out.println("插入数据失败");
        }
        //7.释放资源
        if (pstm != null) {
            pstm.close();
        }
        if (con != null) {
            con.close();
        }
    }

3.update语句

//查询语句
            String sql = "update emp set name=?,age=? where id=?";
            PreparedStatement pstm = con.prepareStatement(sql);
            //5.传参并执行sql语句
             //此处的参数也可以设置为在手动输入的数据,设置同上一个方法
             pstm.setObject(1,emp.setid());
            pstm.setObject(2,emp.setname());
            pstm.setObject(3,emp.setage());
            
            int n = pstm.executeUpdate();
            //判断执行结果
            if(n>0){
                System.out.println("修改成功");
            }else{
                System.out.println("修改失败");
            }
            //7.资源的释放
            if (pstm != null) {
                pstm.close();
            }
            if (con != null) {
                con.close();
            }

4.delete语句

//删除语句
        String sql = "delete from emp where id =?";
        PreparedStatement pstm = con.prepareStatement(sql);
        //预处理对象的sql语句有?,所以需要传参
        //此处的参数也可以设置为在手动输入的数据
        int id =3;
        pstm.setObject(1,id);
        //执行更新操作(增删改查都是更新操作,返回的结果是影响的行数)
        int n =pstm.executeUpdate();
        //判断影响的行数n>0表示删除成功,否则删除失败
        if(n>0){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }
        //7.释放资源
        if (pstm != null) {
            pstm.close();
        }
        if (con != null) {
            con.close();
        }
    }

以上的语句中大部分相同的代码还可以封装为方法调用。