JDBC1——JDBC的本质——JDBC编程六步

1.JDBC是什么?——Java DataBase Connectivity(Java语言连接数据库)

在这里插入图片描述

1.1.JDBC本质是什么?

JDBC是SUN公司制定的一套接口(interface)

  • java.sql.* (这个软件包下有许多的接口)
1.2.面向接口编程:接口都有调用者和实现者:面向接口调用,面向接口实现类。

为什么要面向接口编程?
解耦合:降低程序的耦合度,提高程序的扩展力
多态就是典型的:面向抽象编程。(不面向具体编程)
建议“

  •   Animal a = new Cat();
      Animal b = new Dog();
      //喂养方法
      public void feed(Animal a){  //面向父类编程
      	……
      }
    
  • 不建议
  •   Dog d = new Dog();
      Cat  c = new Cat();
    
1.3.为什么SUN制定一套JDBC接口?——为java程序员修一座桥连接不同的数据库

因为每种数据库的实现原理不一样
Oracle数据库有自己的原理。
MySQL数据库也有自己的原理。
MS SqlServer数据库也有自己的原理。

2.JDBC开发前的准备工作——导入jar驱动包

2.1.对于文本编辑方式的开发
  • 先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。
2.2.对于IDEA开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.JDBC编程六步(需要背会)

1.注册驱动

(作用:告诉java程序,即将要连接的是哪个”品牌“的数据库)

  • mysql的注册
  •   DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    
  • API文档
  • 在这里插入图片描述
    在这里插入图片描述
2.获取连接

(表示JVM进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,用完之后一定要关闭通道)

  • xxxx = DriverManager.getConnection( url , 用户名 , 密码);
  •   String url = "jdbc:mysql://localhost:3306/bjpowernode"; //自己的地址链接
      或:String url = "jdbc:mysql://  IP地址 :  端口  /  文件名    ";
          String url = "jdbc:mysql://127.0.0.1: 3306  / bjpowernode";
    
  •   String user = "root";
      String password = "123";
    
  •   conn = DriverManager.getConnection(url,user,password);
    
  • 在这里插入图片描述
3.获取数据库操作对象

(专门执行sql语句的对象)

  • 创建staetment发送sql语句
  • xxxx = xxxx.createStatement();
  •   stmt = conn.createStatement();
    
  • 在这里插入图片描述
4.执行SQL语句

(DQL、DML……)

  • String xxxx = " sql语句 ";
  •   String sql = "insert into dept(deptno,dname,loc) values (99,'Nobel Prize','Europe')";
      int count = stmt.executeUpdate(sql);
      System.out.println(count == 1 ? "sql成功" : "sql失败");
    
  • 执行结果:
  • 在这里插入图片描述
    在这里插入图片描述
5.处理查询结果集

(只有当第4步执行的是select语句时,才有这一步的操作)
在这里插入图片描述

  •   ResultSet xxxx = xxxx.executeQuery(sqlselect); //专门执行DQL查询语句
    
  • 如果下一行还有数据,则返回true,否则返回false
  •   boolean flag = rs.next();
    

执行结果:
在这里插入图片描述

  •    //5.处理查询结果集(只有当第4步执行的是select语句时,才有这第5步)	
      	  String sqlselect = "select empno,ename,sal from emp";
          ResultSet rs = stmt.executeQuery(sqlselect); //专门执行DQL查询语句
          boolean flag = rs.next();
          while (flag){
    
              //列下标方式,取出本行中,对应列的数据,但是这种方式不健壮
      //      String empno = rselect.getString(1);
      //      String ename = rselect.getString(2);
      //      String sal = rselect.getString(3);
    
              //列标签方式,取出本行中,对应列数据
              String empno = rs.getString("empno");
              String ename = rs.getString("ename");
              String sal = rs.getString("sal");
    
              System.out.println(empno+","+ename+","+sal);
              flag = rs.next();
          }
    

在这里插入图片描述

6.释放资源

(使用完资源后,一定要关闭。java和数据库之间是进程间通信,开启之后一定要关闭)
在这里插入图片描述

4.完整程序

  • 执行结果:
    在这里插入图片描述
import java.sql.DriverManager;
import java.sql.Driver;
import java.sql.*;

public class JDBCTest01 {
    public static void main(String[] args) {


        Connection connection = null;
        Statement stmt = null;

        try{
            //1.注册驱动(作用:告诉java程序,即将要连接哪个品牌的数据库)
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());

        //2.获取连接(表示JVM的进程和数据库进程之间的  通道 打开了,使用完之后  必须关闭)
            String url = "jdbc:mysql://localhost:3306/bjpowernode"; //自己的地址链接
            String user = "root";
            String password = "333";
            connection = DriverManager.getConnection(url,user,password);
            System.out.println("数据库连接对象=" + connection);

        //3.获取数据库操作对象(专门执行sql语句的对象)//创建staetment发送sql语句
            stmt = connection.createStatement();

        //4.执行sql语句(主要执行DQL、DML……)
            String sql = "insert into dept(deptno,dname,loc) values (45,'oR','sz')";
            int count = stmt.executeUpdate(sql);
            System.out.println(count == 1 ? "sql成功" : "sql失败");

        //5.处理查询结果集(只有当第4步执行的是select语句时,才有这第5步)
            String sqlselect = "select empno,ename,sal from emp";
            ResultSet rs = stmt.executeQuery(sqlselect); //专门执行DQL查询语句
            boolean flag = rs.next();
            while (flag){

                //列表标签
                String empno = rs.getString("empno");
                String ename = rs.getString("ename");
                String sal = rs.getString("sal");

                System.out.println(empno+","+ename+","+sal);
                flag = rs.next();
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally { //为保证一定关闭,放在finally关闭
            //6.释放资源(使用完资源后一定要关闭资源,java和数据库属于进程间通信,开启后一定要关闭)
            //按照从小到大的顺序关闭
            try{
                if(stmt != null)
                    stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try{
                if(connection != null)
                    connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
       }
    }
}

5.什么是url?——统一资源路径 (网络中的某个资源的绝对位置)

  • 包括:
    * 1.协议
    * 2.IP
    * 3.PORT(端口)
    * 4.资源名

  • 例如: http://182.61.200.7:80/index.html (百度首页)
    在这里插入图片描述

          *  http://    协议
          *  182.61.200.7   IP
          *  80     端口名
          *  index.html   文件名
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值