zoukankan      html  css  js  c++  java
  • JDBC技术

    JDBC技术

    驱动器接口:Driver

    任何一种数据库驱动程序都提供一个 java.sql.Driver 接口的驱动类,在加载某个数据库驱动程序的驱动类时,都创建自己的实例对象并向 java.sql.DriverMange 类注册该实例对象。

    驱动管理类:Drivermanger

    java.sql.DriverManger 类是 JDBC 的管理层,它负责管理 JDBC 驱动程序的基本服务。

    DriverManger 注册的方式有以下两种:

    • 通过 Class 静态类中的 forName()方法进行调用。
    • 通过将数据库驱动名称添加到 java.lang.System 类中的 jdbc.drivers 属性中。

    加载驱动类并在 DriverManger 类中注册后,即可用来与数据库建立连接,使用getConnection 方法调用。

    数据库连接接口:Connection

    java.sql.Connection 接口表示与特定数据库的连接,并在连接的上下文中可以执行 SQL 语句并返回结果。并通过 Connection 类对象的 close() 方法将连接关闭。

    Statement 对象有三种类型

    • Statement:执行静态 SQL 语句的对象。
    • PreparedStatement: 执行预编译 SQL 语句对象。
    • CallableStatement:执行数据库存储过程。

    执行 executeUpdate()方法或executeQuery(String sql)时,会抛出 SQLException 类型的异常,所以需要通过try-catch 进行捕捉。

    执行静态 SQL 语句接口的:Statement

    处理静态的 SQL 语句主要分为3种 Statement 对象:Statement, PreparedStatement, CallableStatement。

    • 创建 Statement 对象

      Statement 对象可以通过 Connection 对象中的 createStatement() 方法进行创建。

      Connection con = DriverManger.getConnection(url, "sa", "");	//取得数据库连接
      Statement stmt = con.createStatement();						//获取Statement 对象
      
    • 使用 Statement 对象执行 SQL 语句

      举个例子:

      ResultSet rs = stmt.executeQuery("select * from user");
      
    • 关闭 Statement 对象

    执行预编译的 SQL 语句接口:PreparedStatement

    该语句为每一个参数保留一个问号 (?) 作为占位符。每个问号的值必须在该语句执行之前,通过适当的 setXXX() 方法来提供。

    举个栗子:

    // 创建 PreparedStatement 对象
    PreparedStatement psmt = con.prepareStatement("update my_table set m = ? where x = ?");
    //传递多参数
    pstmt.setString(1, "a");
    pstmt.setString(2, "b");
    

    处理存储过程语句接口:CallableStatement

    • 创建 CallableStatement 对象

      CallableStatement 对象是用 Connection 类中的 prepareCall() 方法创建。

      举个栗子:

      CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");
      

      ? 占位符是输入、输出还是输入和输出参数,取决于存储过程 getTestData。

    • 将输入参数传给 CallableStatement 对象是通过 setXXX() 方法完成的。如果存储过程返回的是输出参数,则在执行 CallableStatement 对象钱必须先注册每个输出参数的 JDBC 类型。注册 JDBC 类型是用 registerOutParameter() 方法来完成的。

      CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");	//调用存储过程
      cstmt.registerOutParameter(1, java.sql.Types.TINYINT);					//向问号传递参数
      cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 3);				//向问号传递参数
      cstmt.executeQuery();													//执行存储过程
      byte x = cstmt.getByte(1);
      java.math.BigDecimal n = cstmt.getBigDeciaml(2,3);
      
    • 执行存储过程

    获取查询结果

    • 执行 executeUpdate()方法,将返回一个int 型数值。
    • 执行 executeQuery()方法,将返回一个ResultSet 类型的结果集。
  • 相关阅读:
    第一次个人编程作业
    第一次博客作业
    学习C#字符串中的String类和String Builder类
    第一节:泛型在单例游戏基类中的简单运用
    Alpha 冲刺 (6/10
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    福大软工1816 · 团队现场编程实战(抽奖系统)
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
  • 原文地址:https://www.cnblogs.com/weixuqin/p/9418685.html
Copyright © 2011-2022 走看看