• Jdbc概念性知识


    JDBC定义:
    JDBC全称: Java Data Base Connectivity(数据库连接): 独立于特定数据管理系统, 通用的sql数据库存取和操作的公共接口, 是一种面向接口编程

    JDBC为访问不同的数据库提供了不同的途径,提供了统一的访问.

              java应用-jdbc-oracle/mysql/sql server

        ojdbc6.jar是JDBC连接数据库所必需的一个驱动包, 这个驱动包里面的某些特定的方法实现了下面三个接口, 从而可以连接到数据库
        我们把这种可以实现这三个接口的jar称为数据库的驱动包

    Connection接口是jdk中定义好的一个数据库连接的接口, 在javaAPI当中没有定义任何实现该接口的实现类, 这些实现类将会由数据库厂商提供, 同样Statement, ResultSet这两个接口都是以这种形式来定义, 这样的编程模式成为面向接口编程

    加载驱动程序:class.forname(driveClass)
      加载mysql驱动:Class.forName("com.mysql.jdbc.Driver");
      加载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");//"oracle.jdbc.OracleDriver"
    
    获得数据库连接:
    DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc","root","root");
    //"jdbc:oracle:thin:@localhost:1521:orcl" 创建Statement对象:conn.creatStatement();

     

          //定义常量 常量全部大写
            private static final String USERNAME = "test";					1		
    	private static final String PASSWORD = "test";                                  2
    	private static final String URL                                                 3
    	    = "jdbc:oracle:thin:@localhost:1521:orcl";
    	private static final String DRIVERCLASSNAME  //数据库的驱动程序                    4
    	    = "oracle.jdbc.OracleDriver";
    
     	public static Connection getConnection() {
    		//方法定义成静态的,可以通过类名直接点出来
    		Connection conn = null;
    		try { //1.加载驱动程序
    			Class.forName(DRIVERCLASSNAME);	
        	              //2.获取数据库的连接
    			conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 
    //3.通过数据库的连接操作数据库,实现增删改查
    statemet stmt = conn.createStatement();//实例化
    ResultSet rs = stmt.executeQuery("select * from **biao ");
    //我们查询的数据就会存在这个rs中了.会返回一个结果集,这个结果集引入时是sql下的,
    //不要写错了,接下来怎么调用里面的东西呢?
    while(rs.next())//是说是否有下一个,有返回true,没有返回false
    //意思是说,里面如果有数据,就会打印出来,没有这个循环就不会走
    {//我们用while把结果循环循环打印出来
    syso(rs.getString("")+","+rs.getInt(""));
    //rs提供了想打印哪种数据类型就打印哪种的方法用get..如上
    
    }
    
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}                
    

      

     

     MVC三层架构:
          View 视图层
    	Control 控制层
    	Model模型层
    	和 DB 数据库
    

      

    JDBC主要使用的一个类和三个接口:
    DriverManager:
      驱动程序管理类, 由这个类来获取Connection接口的实例

    Connection: 获取数据库的连接, 设置自动提交方式, 获取Statement(包括其子类)对象
      prepareStatement(sql)-->返回用于执行sql语句的一个对象
      callableStatement-->返回执行存储过程的一个对象
      setAutoCommit(true)-->设置数据库提交方式(自动 / 手动)

    Statement: 执行sql语句, 返回结果集
    返回boolean类型 prepareStatement.execute()-->用于执行存储过程和函数
    返回ResultSet prepareStatement.executeQuery()-->用于查询的语句
    返回int prepareStatement.executeUpdate()-->用于增, 删, 改的语句

    批量处理:
    prepareStatement.addBatch()-->每次处理一条sql语句
    返回int[] prepareStatement.executeBatch()-->将一批命令提交给数据库去执行

    以占位符的形式构建sql语句
    String sql = "select * from tablename t where t.id=? and t.name in (?,?,?)";
    prepareStatemenet.setInt(1, 24)
    prepareStatemenet.setString(2, "Tom");
    prepareStatemenet.setString(3, "Jack");
    prepareStatemenet.setString(4, "Kitty");
    prepareStatemenet.executeQuery();
    调用设置占位符参数方法, 需要传两个参数:
    第一个参数: 占位符索引值, 第几个 ? , 就写几, 从1开始数
    第二个参数: 占位符的值, 设置什么类型的参数, 就用什么类型的方法

    ResultSet:
    由Statement执行查询sql之后返回的结果集
    返回boolean类型 next()-->判断结果集是否有下一行数据
    获取数据
    resultSet.getString()--->方法可以传字符串, 表示表中字段的名字, 也可以传整数, 表示第几列
    resultSet.getInt()
    resultSet.getDate()
    ...
    通过对各种方法的重写来获取结果集中的数据

    java连接数据库的代码
    定义四个属性: username, password, url, driver
    不用记住, 知道写什么东西并且在哪能找到就行
    1, 类加载器去加载数据库的驱动程序
    Class.forName(dirver);
    2, 直接调用DriverManager的静态方法getConnection()获取连接
    Connection conn = DriverManager.getConnection(url, username, password);

  • 相关阅读:
    Kubernetes 两步验证
    实战优化丨如何借助 CODING 实现云开发中的云函数的自动化部署
    弹性配置为构建提速
    一分钟开始持续集成之旅系列之:C 语言 + Makefile
    一分钟开始持续集成之旅系列之:Java + GWT
    静态网站架构的演进和最佳实践
    DevOps
    真香!CODING DevOps “极速构建计划”,再也不用担心构建慢了!
    CODING 敏捷实战系列课第二讲:Scrum 敏捷项目管理核心要素之 3355
    一分钟开始持续集成之旅系列之: Vue + 腾讯云 COS 上传部署
  • 原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/8145510.html
Copyright © 2020-2023  润新知