JDBC中对数据库做增删改操作

对数据库中的操作只有俩种方式,增删改的操作是一种,查询时一种,增删改没有结果集,而查询有结果集,接下来我就先介绍增删改的通用操作代码

public void testInsert(){
        Connection connection = null;
        PreparedStatement ps = null;
        try {
            InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");

            Properties properties = new Properties();
            properties.load(is);

            String user = properties.getProperty("user");
            String password = properties.getProperty("password");
            String url = properties.getProperty("url");
            String driver = properties.getProperty("driver");

            Class.forName(driver);

            connection = DriverManager.getConnection(url, user, password);


            //4,预编译sql语句,返回PreparedStatement实例
            String sql = "insert into users(id,name,password,email,birthday)values(?,?,?,?,?)";
            ps = connection.prepareStatement(sql);

            //5,填充占位符
            ps.setInt(1,5);
            ps.setString(2,"罗志祥");
            ps.setString(3,"123147");
            ps.setString(4,"www@qq.com");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse("1000-01-01");
            ps.setDate(5,new java.sql.Date(date.getTime()));

            //6,执行操作
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }  finally {
            //7,资源的关闭
            try {
                if (ps != null)
                    ps.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try {
                if (connection != null)
                    connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }

 

第一步就是先读入jdbc.properties文件中的四个基本信息

第二步是加载驱动

第三步是获取连接

第四步预编译sql语句,返回preparedStatement实例

第五步填充占位符:上边的代码只是第一遍做,熟悉了一下过程,如果在我们不知道类型是,一般会选择setObjec()方法

第六步是执行操作了:除了execute()方法,我们一般也会写成executeUpdate()方法,execute()返回的是boolean类型的值,这个方法指的是如果返回true,则表示有结果集,如果返回false,就表示没有结果集,而executeUpdate()方法,则返回的是一个int类型的值,指的是被影响到的行数,比如说删除多少行,或者修改多少行这样的

第七步是资源的关闭。

 

通过反复的学习,发现第一步第二步,第三步和第七步都是固定的套路,所以可以写到一个工具类里

例如

public class JDBCUtils {

    public static Connection getConnection() throws Exception {

        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");

        Properties properties = new Properties();
        properties.load(is);

        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driver");

        Class.forName(driver);

        Connection connection = DriverManager.getConnection(url, user, password);

        return connection;
    }

    public static void closeResource(Connection connection, Statement ps){
        try {
            if (ps != null)
                ps.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        try {
            if (connection != null)
                connection.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

  

这样下次我们就可以直接调用已经写好的方法,不用再重复写固定的代码了

然后接下来就是写一个通用的增删改操作,来,直接上代码

public void update(String sql,Object ...args){
        Connection connection = null;
        PreparedStatement ps = null;
        try {
            //1,获取数据库的连接
            connection = JDBCUtils.getConnection();

            //2,预编译sql语句
            ps = connection.prepareStatement(sql);
            //3,填充占位符
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i+1,args[i]);
            }
            //4,执行操作
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //5,关闭资源
            JDBCUtils.closeResource(connection,ps);
        }


    }

 

这次就只有这五步了:

第一步:这是学习jdbc的必须的一个步骤,只是这里调用了已经写好的方法

第二步:预编译sql语句

第三步:填充占位符:这一步尤为关键:i+1表示的是sql中的位置,args[i]:可变参数占位符,有几个?就写几个值进来

第四步:执行操作

第五步:关闭资源也是直接调用已经写好的方法

 

最后写一个测试的代码

 public void testUpdate1(){
        String sql = "delete from users where id = ?";
        update(sql,2);
        String sql = "update account set name = ? where id = ?";
        update(sql,"DD","2");

  

这里写了一个删除的测试,一个更新的测试,可以对照上便代码进行学习

好了,这就是增删改的全部内容,我的下一步博客会更新查询操作,希望大家持续关注,感谢

上一篇:吴裕雄--天生自然java开发常用类库学习笔记:System类


下一篇:Java : Properties