zoukankan      html  css  js  c++  java
  • 【JAVA SE基础篇】72.JDBC介绍和流程

    1.JDBC介绍

    什么是JDBC?

      JDBC是为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成。是java程序与数据库系统通信的标准API。

      JDBC API使得开发人员可以使用纯java的方式来连接数据库,并执行操作。

    为什么使用JDBC?

      sun公司不知道主流数据库的程序代码。无法提供代码连接数据库。因此,sun自己提供api。

      凡是想与java连接的数据库,数据库厂商自己必须实现jdbc这套接口。而数据库场厂商的jdbc实现

      也就是数据库的数据库驱动。

    2.JDBC流程

      1.加载Drivet驱动

    加载JDBC驱动是通过调用方法java.lang.Class.forName()

    加载语句的形式 : 

      Class.forName(“oracle.JDBC.driver.OracleDriver”);//使用Oracle的JDBC驱动程

      Class.forName(“com.microsoft.JDBC.sqlserver.SQLServerDriver”);//使用SQL Server的JDBC驱 动程序 

      Class.forName(“com.ibm.db2.JDBC.app.DB2Driver”);//使用DB2的JDBC驱动程序

      Class.forName("com.mysql.JDBC.Driver");//使用MySql的JDBC驱动程序

      2.创建数据库连接

    与数据库建立连接的方法是调用DriverManager.getConnection(String url, String user, String password )方法

    DriverManager接口是JDBC的管理层,作用于用户和驱动程序之间。跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。

    连接MySql数据库:Connection con= DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

    连接Oracle数据库:Connection con= DriverManager.getConnection("jdbc:oracle:thin:@host:port/database", "user", "password");

    注:连接对象内部其实包含了Socket对象,是一个远程的连接。比较耗时!这是Connection对象管理的一个要点!真正开发中,为了提高效率,都会使用连接池来管理连接对象!

      3.创建Statement发送命令,发送SQL语句并获取结果

    Statement接口:Statement对象用于将 SQL 语句发送到数据库中,或者理解为执行sql语句 

      有三种 Statement对象: 

    1.Statement:用于执行不带参数的简单SQL语句;

    2.PreparedStatement(最常用)(从 Statement 继承):用于执行带或不带参数的预编译SQL语句;

    3.CallableStatement(从PreparedStatement 继承):用于执行数据库存储过程的调用

      常用Statement方法:

    1.ResultSet executeQuery(String sql):可以执行插入、删除、更新等操作,返回值是执行该操作所影 响的行数

    2.boolean execute(String sql):可以执行任意SQL语句,然后获得一个布尔值,表示是否返回 ResultSet

    3.int executeUpdate(String sql):执行SQL查询并获取到ResultSet对象

    例:

      4.处理结果

    ResultSet对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的 所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这 些行中数据的访问。

    ResultSet里的数据一行一行排列,每行有多个字段,且有一个记录指针,指针所指的数据行 叫做当前数据行,我们只能来操作当前的数据行。

    我们如果想要取得某一条记录,就要使用 ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

    ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法,游标向下移动一行。

    初始状态下记录指针指向第一条记录的前面,通过next()方法指向第一条记录。循环完毕后 指向最后一条记录的后面。

      常用方法:

    1.boolean next():将光标从当前位置向下移动一行

    2.boolean previous():游标从当前位置向上移动一行 

    3.void close():关闭ResultSet 对象

    4.xxx getxxx(xxx colIndex):以xxx形式获取结果集当前行指定列号值 

    5.xxx getxxx(String colLabel) 以xxx形式获取结果集当前行指定列名值

    例:

      5.关闭数据库资源

    作为一种好的编程风格,应在不需要Statement对象和Connection对象时显式地关闭它们。

    关闭Statement对象和Connection对象的语法形式为: public void close() throws SQLException

    用户不必关闭ResultSet。当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一 个结果时,该ResultSet将被自动关闭。

    注:

      要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,

      因为 Statement和ResultSet是需要连接是才可以使用的,

      所以在使用结束之后有可能其他的 Statement还需要连接,所以不能先关闭Connection。

      一定要将三个trycatch块,分开写!

  • 相关阅读:
    Unity C# 反编译
    java finalize方法总结、GC执行finalize的过程
    Android性能调优篇之探索垃圾回收机制
    深入理解JVM(一)——JVM内存模型
    Android性能调优篇之探索JVM内存分配
    HashMap实现原理分析
    [干货]2017已来,最全面试总结——这些Android面试题你一定需要
    2017年最全的30个Android面试题,你将如何回答?
    Android2017进阶知识点、面试题及答案(精选版)
    Android2017最新面试题(3-5年经验个人面试经历)
  • 原文地址:https://www.cnblogs.com/chengkuan/p/13449311.html
Copyright © 2011-2022 走看看