JDBC

作者: 菜鸟要逆袭 | 来源:发表于2018-07-25 21:59 被阅读0次

    JDBC概述

    JDBC(Java Data Base Connectivity)java数据库连接,是一种用于执行SQL 语句的接口,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范

    JDBC开发步骤(以mysql数据库为例)

    • 1 使用Statement
    /*0.导入数据库对应的jar包*/
    public class JDBCDemo{
      public static void main(String[] args){
        //1.注册驱动:利用反射技术,将驱动加入到内容中
        //使用java.sql.DriverManager类的静态方法registerDriver(Driver driver)会重复注册两次驱动,造成资源浪费,所以利用反射技术,直接注册。其中Driver是一个接口,在之前导入的jar包中
        Class.forName(com.mysql.jdbc.Driver);
        //2.获得数据库连接
        //使用DriverManager类的静态方法getConnection(String url,String user,String password)
        //方法返回值是Connection接口的实现类
        //url(数据库地址):jdbc:数据库://连接主机IP:端口号//数据库名字
        String url = "jdbc:mysql://localhost:3306/test"; 
        String username = "root";
        String password = "3306";   
        Connection conn = DriverManager.getConnection(url,username,password);
        //3.获得语句执行平台,通过数据库连接对象conn,获取到SQL语句的执行者对象
        //conn调用createStatement(),将SQL语句发送到数据库
        //该方法返回的是Statement接口的实现类对象
        Statement stat = conn.createStatement();
        //4.执行SQL语句
        //通过SQL执行者对象调用方法executeUpdate(String SQL)执行数据库中的SQL语句,可执行insert/delete/update语句
        //该方法返回的是int类型数据,表示成功操作数据行数
        int row = stat.executeUpdate("insert into users(id,name) values(1,'张三')");
        Sop(row);
        //通过执行SQL执行者对象调用方法executeQuery(String SQL)
        ResultSet rs = stat.executeQuery("select from users");
        //5.处理结果集(查询时)
        //ResultSet接口方法next(),若返回true则有结果集,反之无
        while(rs.next()){
          //获取每列数据,使用的是ResultSet接口的getXX(String columnName)方法
          Sop("id:"+rs.getInt("id"));
          Sop("name:"+rs.getString("name"));
        }
        //6.释放资源
        stat.close();
        conn.close();
      }
    }
    
    • 2 使用PrepareStatement
    /*PrepareStatement是Statement接口的子接口,可以进行SQL预编译存储,多次高效的执行SQL语句,并且可以防止SQL注入攻击*/
    public class JDBCDemo{
      public static void main(String[] args){
        Class.forName(com.mysql.jdbc.Driver);
        String url = "jdbc:mysql://localhost:3306/test"; 
        String username = "root";
        String password = "3306";   
        Connection conn = DriverManager.getConnection(url,username,password);
        
        //写好预编译sql语句,其中"?"表示占位符
        String sql = "select * from users where id = ? and name=?";
        PrepareStatement pst = conn.prepareStatement(sql);
        //调用预编译sql执行对象的set()方法,设置占位符对应的参数
        pst.setObject(1,1);
        pst.setObject(2,"张三");
        
        ResultSet rs = pst.executeQuery("select from users");
        while(rs.next()){
          Sop("id:"+rs.getInt("id"));
          Sop("name:"+rs.getString("name"));
        }
        rs.close();
        stat.close();
        conn.close();
      }
    }
    

    JDBC操作的封装

    根据之前对JDBC的了解并使用之后,发现其中很多操作是可以进行封装的。所以接下来介绍一个自己封装的JDBC工具类(JDBCUtils),通过使用该封装对象进行数据库操作,可以高代码复用率以及提高一定的工作效率
    database.properties:

    /*
    将JDBC的可替换配置信息存于database.propertis文件中
    在web项目中,该文件最好放在src根目录下,或者将该文件放在另一个服务器中
    */
    driverClass=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test
    username=root
    password=3306
    

    DBUtils.java

    public class JDBCConfig {
        private static Connection con ;
        private static String driverClass;
        private static String url;
        private static String username;
        private static String password;
        
        static{
            try{
                readConfig();
                Class.forName(driverClass);
                con = DriverManager.getConnection(url, username, password);
            }catch(Exception ex){
                throw new RuntimeException("数据库连接失败");
            }
        }
        
        private static void readConfig()throws Exception{
            //使用类加载器
                    InputStream in = JDBCConfig.class.getClassLoader().getResourceAsStream("database.properties");
             Properties pro = new Properties();
             pro.load(in);   
             driverClass=pro.getProperty("driverClass");
             url = pro.getProperty("url");
             username = pro.getProperty("username");
             password = pro.getProperty("password");
        }
        
        
        public static Connection getConnection(){
            return con;
        }
        
    }
    
    

    相关文章

      网友评论

          本文标题:JDBC

          本文链接:https://www.haomeiwen.com/subject/jrypmftx.html