zoukankan      html  css  js  c++  java
  • JDBC

    JDBC是什么:

    Java database Connectivity(Java语言链接数据库)

    本质是什么:

    JDBC是SUN公司制定的一套接口(interface)
    Java.sql.*;(这个包下有很多的接口)
    接口都有调用者和实现者

    面向接口调用,面向接口写实现类,这都属于面向接口编程

    为什么要面向接口编程

    耦合度:降低程序的耦合度,提高程序的拓展力
    多态机制就是非常典型的:面向接口编程(不要面向具体编程)
    建议:

    Animal a = new Cat();
    Animal a = new Dog();
    public void feed(Animal a){//面向父类型编程
    
    }

    不建议:

    Dog d = new Dog();
    Cat d = new Cat();

    思考:
    为什么SUN制定一套JDBC接口
    每一个数据库的底层实现原理都不一样
    Oracle数据库有自己的原理
    MySQL数据库也有自己的原理
    SQL Server数据库也有自己的原理
    ......
    每一个数据库产品都有自己独特的实现原理

    3.JDBC开发前的准备工作:
    先去官网下载对应的驱动Jar包,然后将其配置到环境变量classpath当中
    classpath=.;路径
    以上配置针对文本编辑器开发,使用idea工具的时候,不需要配置以上的环境变量

    4.JDBC编程六步

    1.注册驱动:(告诉Java程序,即将不要连接的是那个数据库)
    (原始的写法)
    Driver driver = new com.mysql.jdbc.Driver();
    DriverManager.registerDriver(driver);
    /*
    1.加载驱动
    这个最常用
    Class.forName("com.mysql.jdbc.Driver");
    为什么这个最常用:
    因为参数是一个字符串,字符串可以写到XXXXX.properties文件中
    */
    
    2.获取连接:(表示JVM的进程和数据库进程之间的通道打开了,这个属于进程之间的,重量级的,使用完之后一定要关闭通道)
    3.获取数据库操作对象(专门执行SQL语句的对象)
    4.执行SQL语句(DQL,DML...)
    5.处理查询结果集(只有当第四部执行select语句的时候,才有这第五步的查询结果集)
    6.释放资源(使用完之后一定要关流)

    具体代码如下:

    //增加

    package com.jdbc;
    
    import java.sql.*;
    
    /*
    编程6步
    */ public class dbConn { public static void main(String[] args) throws SQLException { String url = "jdbc:mysql://localhost:3306/test2"; String username = "root"; String password = "root"; Connection conn = null; Statement stmt = null; try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.获取连接 conn = DriverManager.getConnection(url,username,password); // System.out.println(conn);//获取数据库连接com.mysql.jdbc.JDBC4Connection@14bf9759 // conn.close();//关流 //3.获取数据库操作对象(Statement,专门执行SQL语句的) stmt = conn.createStatement(); //4.执行SQL String sql = "insert into user(username,pwd) values ('ljy','ljy')"; //专门执行DML语句(insert,delete,update) //返回值是影响数据库中的记录条数 int count = stmt.executeUpdate(sql); System.out.println(count == 1?"保存成功":"保存失败"); //5.结果处理器 } catch (SQLException e) { e.printStackTrace(); }finally { //6.关流 if (stmt !=null){ stmt.close(); } if (conn != null){ conn.close(); } } } }

    //删除

    package com.jdbc;
    
    import java.sql.*;
    
    public class del {
        public static void main(String[] args) throws SQLException {
            String url = "jdbc:mysql://localhost:3306/test2";
            String username = "root";
            String password = "root";
            Connection conn = null;
            Statement stmt = null;
    
            try {
                //1.注册驱动
    
                Driver driver = new com.mysql.jdbc.Driver();
                DriverManager.registerDriver(driver);
                //2.创建连接
                conn = DriverManager.getConnection(url,username,password);
                //3.获取数据库操作对象(Statement,专门执行SQL语句的)
                stmt = conn.createStatement();
                //4.执行SQL
                String sql = "delete from user where id = 2";
                int count = stmt.executeUpdate(sql);
                System.out.println(count == 1?"删除成功":"删除失败");
                //5.结果处理
    
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                //6.关流
                if (stmt !=null){
                    stmt.close();
                }
                if (conn !=null){
                    conn.close();
                }
            }
        }
    }

    //更改

    package com.demo;
    
    import java.sql.*;
    
    public class delDBConn {
        public static void main(String[] args) {
            //定义四个属性 driver url username password
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/test2";
            String username = "root";
            String password = "root";
            //定义三个对象
            Connection conn = null;//连库对象
            Statement st = null;//Statement,专门执行SQL语句的
            ResultSet rs = null;//结果处理集对象
    
            try {
                //1.加载驱动
                Class.forName(driver);
                //2.连库
                conn = DriverManager.getConnection(url, username, password);
                //3.获取数据库操作对象
                st = conn.createStatement();
                //4.执行SQL
                String sql = "delete from user where id = 3";
                int count = st.executeUpdate(sql);
                System.out.println(count == 1 ? "删除成功!" : "删除失败!");
                //5.处理结果集
    
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            } finally {
                //6.关流
                try {
                    if (st != null) {
                        st.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //查询

    package com.demo;
    
    import java.sql.*;
    
    public class findAllDBConn {
        public static void main(String[] args) {
            //定义四个属性 driver url username password
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/test2";
            String username = "root";
            String password = "root";
            //定义三个对象
            Connection conn = null;//连库对象
            Statement st = null;//Statement,专门执行SQL语句的
            ResultSet rs = null;//结果处理集对象
    
            try {
                //1.加载驱动
                Class.forName(driver);
                //2.连库
                conn = DriverManager.getConnection(url,username,password);
                //3.获取连接对象
                st = conn.createStatement();
                //4.执行SQL
                String sql = "select * from user";
                rs = st.executeQuery(sql);
                //5.结果处理集
                //如果查询多个使用,使用while循环进行所有数据获取
                //技巧:如果查询结果最多1条,使用  if(rs.next()) {  查询到了 } else {  没有数据 }
                while (rs.next()){
                    String id = rs.getString(1);
                    String user = rs.getString(2);
                    String pwd = rs.getString(3);
                    System.out.println(user+","+pwd+",");
                }
    
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            }finally {
                //6.关流
                    try {
                        if (rs !=null) {
                            rs.close();
                        }
                        if (st !=null) {
                            st.close();
                        }
                        if (conn !=null) {
                            conn.close();
                        }
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
  • 相关阅读:
    String分割成int[]和List<Integer>
    linux查询正在运行的jar包并kill进程
    linux自动清理n天(1个月)前日志文件
    zookeeper命令行操作
    sql开窗函数
    hdfs shell操作
    centos7安装mysql8
    hadoop集群安装
    hdfs基本介绍
    IDEA下运行MAVEN项目,报"程序包******不存在"
  • 原文地址:https://www.cnblogs.com/ljy9/p/13946808.html
Copyright © 2011-2022 走看看