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();
                    }
                }
            }
        }
  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/ljy9/p/13946808.html
Copyright © 2011-2022 走看看