首页 > 图灵资讯 > 技术篇>正文

求知JDBC的实际操作过程

2023-04-16 09:25:39

  DBC是一种执行方式SQL语句的Java API,它由一组Java语言编写的类和接口组成,可以为各种关系数据库提供统一的访问.JDBC为构建更先进的工具和接口提供了一个基准,毫无疑问JDBC是连接java应用与数据库之间的桥梁。它使数据库开发人员能够编写数据库应用程序,JDBC实现了这些标准的所有目标,并且具有简单、严格的类型定义和高性能的界面。接下来介绍一下JDBC的实际操作过程。

  JDBC主要包括一个类和三个核心接口:

  1.DriverManger:用于管理所有注册驱动的驱动管理。(为不同的数据库调用不同的驱动程序)它是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。此外,DriverManager中的方法是静态的,因此在程序中不需要实例化,可以直接通过类名使用.常用的DriverManager类方法有getconectionnion(String url,String user,String password)方法。

  2.Conection接口:代表与数据库的连接。要操作数据库表,首先要与数据库建立连接。就像在应用程序和数据库之间建立一条连接路径,Conection实例可以通过drivermananager类的getcon()获得。创建方法如下:

  Connection conn = DriverManager.getConnection(url,user,pass);

  该对象的常用方法:

  3.PreparedStatement:预处理和执行sql语句,在创建过程中支持预编译当Preparedstatement对象将sql语句传输到数据库进行预编译时,每次执行sql语句时,效率都会大大提高。 PreperedStatement是Statement的孩子,可以调用其实例对象:

  PreperedStatement st = conn.preparedStatement()

  Statement使数据库频繁编译SQL,可能导致数据库缓冲区溢出。PreparedStatement 可预编译SQL,从而提高数据库的执行效率。

  并且Preperedstatement允许以占位符的形式替换sql中的参数,以简化sql语句的编写。

  4.ResultSet:用于接收数据库中的所有查询记录,并使用Resultset显示内容。

  Jdbc程序中的Resultset用于代表Sql语句的执行结果。Resultset封装执行结果时,采用类似表格的方式,ResultSet 对象维护了指向表数据行的游标。初始时,游标在第一行之前调用Resultset.next() 该方法可以使游标指向具体的数据行,并通过调用该方法获取该行的数据。

  5.遍历结果集:

  public List getAllPet() {

  //创建一个集合对象

  List pets=new ArrayList<>();

  ///声明一个宠物对象

  Pet pet=null;

  ///sql语句

  String sql="SELECT `id`,`name`,`typename`,`health`,`love`,`birthday`,`price`,`owner_id`,`store_id`,`type` FROM pet";

  //参数集

  Object[] params={};

  ///处理sql语句和参数,将执行结果存储在res中

  res=super.executeSelect(sql, params);

  try {

  /*

  res.next使用res对象读取记录中的内容,有两个动作,

  1、指向下一条记录的数据库指针;

  2、如果不返回false,自然循环退出;如果有记录,完成第二个动作,将记录内容存储在res中,并返回true.

  */

  while(res.next()){

  pet=new Pet();//创建宠物对象

  import java.sql.DriverManager;

  import java.sql.PreparedStatement;

  import java.sql.ResultSet;

  import java.sql.SQLException;

  /**

  * 数据库操作基础类

  *

  * @author AAA

  *

  */

  public class BaseDao {

  // 创建4个常量(数据库连接地址、数据库驱动地址、数据库登录权限名、登录密码)

  ////数据库驱动地址

  private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";

  //数据库连接地址

  private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";

  //用户名

  private static final String UNAME = "system";

  //密码

  private static final String UPWD = "ok";

  // 使用静态块加载数据库的驱动

  static {

  try {

  Class.forName(DRIVER);

  } catch (ClassNotFoundException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  // 声明三个核心接口对象(Connection,PreparedStatment,ResultSet)

  private Connection conn = null;// 连接到数据库的对象

  private PreparedStatement pstmt = null;// SQL命令预处理和执行操作对象

  protected ResultSet res = null;// 查询后返回的结果集对象

  // 编写创建数据库连接对象的方法(DriverManager)

  private void getConn() {

  try {

  conn = DriverManager.getConnection(URL, UNAME, UPWD);

  } catch (SQLException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  // 编制关闭数据库释放资源的方法

  protected void colseAll() {

  if (null != res) {

  // 编制数据库的查询方法

  protected ResultSet excuteSelect(String sql, Object[] params) {

  // 调用数据库连接对象的方法

  this.getConn();

  // 创建预处理对象

  try {

  pstmt = conn.prepareStatement(sql);

  // 通过for循环预处理参数

  if (null != params) {

  for (int i = 0; i < params.length; i++) {

  pstmt.setObject(i+1, params[i]);

  }

  }

  // 操作查询并返回结果集

  res = pstmt.executeQuery();

  } catch (SQLException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  return res;

  }

  // 编写数据库的增删方法

  protected int excuteEdit(String sql,Object[] params){

  int count = 0;

  ////调用数据库连接对象的方法

  this.getConn();

  try {

  ///创建SQL命令预处理执行操作的对象

  pstmt = conn.prepareStatement(sql);

  ///预处理参数

  for (int i = 0; i < params.length; i++) {

  pstmt.setObject(i+1, params[i]);

  }

  ////接收操作执行返回的行数

  count = pstmt.executeUpdate();

  } catch (SQLException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }finally {

  this.colseAll();

  }

  return count;

  }

  }

  6、释放资源

  Jdbc程序运行后,记得释放程序在运行过程中创建的与数据库互动的对象,通常是Resultset, Statement和conection对象。值得注意的是为确保资源释放代码能够运行,还必须放置资源释放代码在finally语句中。

  当然,我们上面说的只是JDBC的一些简单操作步骤,事实上,JDBC有很多知识和需要注意的地方。在实际操作过程中,我们也会遇到各种需要探索和解决的问题。如何看到彩虹而不经历风雨,只有通过不断的学习和探索,才能在实践的道路上获得真正的知识。

上一篇 读完这篇全面了解MYSQL知识
下一篇 Java 数据类型详解

文章素材均来源于网络,如有侵权,请联系管理员删除。