JDBC-连接数据库 第三版 安全-2023-2-25

避免Sql注入的问题。 不用Statement 而用PrepareStatement 

预编译 然后手工赋值 setInt or setString 

插入:

public class TestInsert {
    public static void main(String[] args) {
        Connection conn =null;
        PreparedStatement st = null;


        try {
            conn = JdbcUtils.getConnection();

            //区别 使用? 占位符代替参数
            String sql = "insert into account(id,`name`,`money`) VALUES(?,?,?)";
            st = conn.prepareStatement(sql);  //预编译sql,先写sql,然后不执行

            //手工给参数赋值
            st.setInt(1,3);
            st.setString(2,"CCCCC");
            st.setDouble(3,60000.00);

            //执行
            int i = st.executeUpdate();
            if (i>0){
                System.out.println("插入成功");
            }

        } catch (SQLException e) {
         e.printStackTrace();
        } finally {
            JdbcUtils.release(conn,st,null);
        }
    }
}

查询 

public class TestSelect {
    public static void main(String[] args) {
        Connection conn =null;
        PreparedStatement st = null;
        ResultSet rs = null;


        try {
            conn = JdbcUtils.getConnection();

            //区别 使用? 占位符代替参数
            String sql = "select * from account where `id`=? or `id`=?";
            st = conn.prepareStatement(sql);  //预编译sql,先写sql,然后不执行

            //手工给参数赋值
            st.setInt(1,1);
            st.setInt(2,2);
            rs = st.executeQuery();

            while (rs.next()){
                System.out.println(rs.getString("name"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn,st,null);
        }
    }
}

 

posted @ 2023-02-25 11:17  Rui2022  阅读(14)  评论(0编辑  收藏  举报