• JDBC基本知识


    JDBC对数据库操作的六个基本步骤:
        //1.注册数据库驱动
                
        //2.获取数据库连接

        //3.获取传输器对象

        //4.利用传输器传输SQL到数据库执行,获取结果集对象
            
        //5.遍历结果集,获取结果数据

        //6.关闭资源(这里低层是将连接还回数据源中)

    Statement和PreparedStatement都可以作为执行sql语句的传输器。它们存在父子关系;PreparedStatement是Statement 父级。
    在使用Statement传输器时容易被用户输入sql关键字后导致后台sql被破坏,即sql注入攻击。安全性并不高。


    PreparedStatement优点:
                (1)可以防止sql注入攻击, 采用预编译机制, 先将sql语句的主干发送数据库, 数据库编译后就确定了sql语句的语意, 如果后面参数中再包含sql关键字或者是特殊字符, 也只会当作普通的字符来处理!!!
                (2)通过方法来设置参数, 省去了拼接sql语句的麻烦.
                (3)能够尽最大可能来提高效率. PreparedStatement发送的sql语句编译后就被数据库缓存下来了, 再次执行时, 如果和缓存中的匹配就会使用缓存中的语句, 不再编译, 直接执行. statement发送的sql语句是先拼接好再发送给数据库, 由于参数不同整条sql语句也就不同, 所以每次都需要编译.

    Statement对数据库的增删查改:

    增加数据:

     1 public static void add(Connection conn,Statement stat,ResultSet rs){
     2         try {
     3             //注册mysql驱动
     4             Class.forName("com.mysql.jdbc.Driver");
     5             //建立连接
     6             conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb1","root","admin");
     7             //创建传输器
     8             stat = conn.createStatement();
     9             //操作数据
    10             int rows = stat.executeUpdate("insert into account values(null,'张三',88888888)");
    11             System.out.println("添加了"+rows+"条");
    12         } catch (Exception e) {
    13             e.printStackTrace();
    14         }finally{
    15             JDBCutils.closeResou(conn, stat,rs);
    16         }
    17     }

    查看数据:

     1 public static void check(Connection conn,Statement stat,ResultSet rs){
     2         
     3         try {
     4             //注册mysql驱动
     5             Class.forName("com.mysql.jdbc.Driver");
     6             //建立连接
     7             conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb1","root","admin");
     8             //创建传输器
     9             stat = conn.createStatement();
    10             //操作数据
    11             rs = stat.executeQuery("select name 名字 from account where money = 500;");
    12             while(rs.next()){
    13                 System.out.println(rs.getString("名字"));
    14             }
    15             
    16         } catch (SQLException e) {
    17             e.printStackTrace();
    18         }finally{
    19             JDBCutils.closeResou(conn, stat, rs);
    20         }
    21         
    22     }

    PreparedStatement对数据的增删查改:

    增加数据:

    public static void add(Connection conn,PreparedStatement ps){
            //注册驱动
            try {
                Connection conn = null;
                PreparedStatement ps = null;
                ResultSet rs = null;
                
                Class.forName("com.mysql.jdbc.Driver");
                
                conn = DriverManager.getConnection("jdbc:mysql:///mydb1","root","admin");
                
                String sql = "insert into account values(null,?,?) ";
                
                ps = conn.prepareStatement(sql);
                
                ps.setString(1, "李达康");
                
                ps.setDouble(2, 1000);
                
                int rows = ps.executeUpdate();
                
                System.out.println("添加了:"+rows);
                
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException();
            }finally{
                JDBCutils.closeResou(conn, ps, null);
            }
        }

    删除数据:

    public static void del(Connection conn,PreparedStatement ps){
            
            try {
                Connection conn = null;
                
                PreparedStatement ps = null;
                
                ResultSet rs = null;
                
                Class.forName("com.mysql.jdbc.Driver");
                
                conn = DriverManager.getConnection("jdbc:mysql:///mydb1","root","admin");
                
                String sql="delete from account where id=?";
                
                ps = conn.prepareStatement(sql);
                
                ps.setInt(1, 10);
                
                int rows = ps.executeUpdate();
                
                System.out.println("删除了"+rows);
                
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                JDBCutils.closeResou(conn, ps, null);
            }
            
        }

    查数据:

    public static void check(Connection conn,PreparedStatement ps,ResultSet rs){
            try {
                Connection conn = null;
                
                PreparedStatement ps = null;
                
                ResultSet rs = null;
                
                Class.forName("com.mysql.jdbc.Driver");
                
                conn = DriverManager.getConnection("jdbc:mysql:///mydb1","root","admin");
                
                String sql="select id from account where name=?";
                
                ps = conn.prepareStatement(sql);
                
                ps.setString(1,"童旭平");
                
                rs = ps.executeQuery();
                
                while(rs.next()){
                    
                    System.out.println(rs.getInt("id"));
                    
                }
                
            } catch (Exception e) {
                e.printStackTrace();
                
            }finally{
                JDBCutils.closeResou(conn, ps, rs);
            }
        }
        
  • 相关阅读:
    SpringMVC(二)
    SpringMVC(一)
    Mybatis之mapper.xml配置文件中的#{}和${}
    Mybatis(二)
    Mybatis(一)
    Linux部署项目
    BOS物流项目第十三天
    Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans.xsd'
    景点API支持查询携程旅游门票景点详情
    Html引入百度富文本编辑器ueditor及自定义工具栏
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6880288.html
Copyright © 2020-2023  润新知