JDBC操作数据库知识点整理

本文详细介绍了JDBC的基础知识,包括JDBC的用途、目标、驱动程序类型以及API的使用。讲解了如何加载与注册JDBC驱动,建立数据库连接,并重点讨论了PreparedStatement以防止SQL注入。此外,还涵盖了ResultSet的使用以及ResultSetMetaData来获取列信息,最后探讨了JDBC的批量处理和面向接口编程的重要性。
摘要由CSDN通过智能技术生成
前序
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。
大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种 关系数据库来完成。
持久化的主要应用是 将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

          这样在Java程序与数据库之间就需要建立连接。

在Java中,数据库存取技术可分为如下几类:
      JDBC直接访问数据库(本文主要写的是这个)
     JDO技术 第三方O/R工具,如Hibernate, ibatis 等
      JDBC是java访问数据库的基石,JDO, Hibernate等只是更好的封装了JDBC。

JDBC
          JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的 公共接口(一组API),定义了 用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这个类库可以以一种标准的方法、方便地访问数据库资源 JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

          JDBC的目标是使Java程序员 使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。


各个厂商都会对JDBC接口提供相应的实现,这样我们只需要面向JDBC接口编程就可以连接不同的数据库,不需要关心具体连接的细节。

JDBC接口(API)包括两个层次:
      面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。 我们主要面向这个API编程。
      面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。数据库公司解决,我们只需要调用就可以了。

JDBC是sun公司提供一套用于数据库操作的接口,Java程序员只需要面向这套接口编程即可。不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。---面向接口编程(我们程序员只需要面向JDBC提供的接口编程就可以连接到数据库)

JDBC驱动程序
     JDBC驱动程序:各个数据库厂商根据JDBC的规范制作的 JDBC 实现类的类库 
     JDBC驱动程序总共有四种类型:
          第一类:JDBC-ODBC桥。
          第二类:部分本地API部分Java的驱动程序。
          第三类:JDBC网络纯Java驱动程序。
          第四类:本地协议的纯 Java 驱动程序。
          第三、四两类都是纯Java的驱动程序,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势。

JDBC---API
    JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。

     


获取数据库连接

       Driver 接口
           java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。
        这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现,我们在程序中不需要直接去访问实现了 Driver 接口的类,、
        而是 由驱动程序管理器 类(java.sql.DriverManager)去调用这些Driver实现
         
          常用的驱动
               Oracle的驱动:oracle.jdbc.driver.OracleDriver
               mySql的驱动: com.mysql.jdbc.Driver

   加载与注册 JDBC 驱动
          方式一: 加载 JDBC 驱动需调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名Class.forName(“com.mysql.jdbc.Driver”);
          方式二:DriverManager 类是驱动程序管理器类,负责管理驱动程序 DriverManager.registerDriver(com.mysql.jdbc.Driver);
               通常不用显式调用 DriverManager 类的 registerDriver() 方法来注册驱动程序类的实例,因为 Driver 接口的驱动程序类都包含了静态代码块,在           这个静态代码块中,会调用 DriverManager.registerDriver() 方法来注册自身的一个实例

     建立连接(Connection)
              可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接
                 数据库连接需要的参数:driverClass(驱动类),url(全球资源定位符),user(用户名),password(密码)
               这些参数可以用“属性名=属性值”方式告诉数据库, 通用做法是在外边建一个专门放配置文件的.properties文件,放在工程目录下,在程序中获取
               JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。
                    JDBC URL的标准由三部分组成,各部分间用冒号分隔,   jdbc:子协议:子名称 协议:
                         JDBC URL中的协议总是jdbc
                         子协议:子协议用于标识一个数据库驱动程序
                         子名称:一种标识数据库的方法。(定位数据库)包含主机名(对应服务端的ip地址),端口号,数据库名
               
    例如:
                    jdbc:mysql://localhost:3306/test
                    协议  子协议      子协议名称

对于 Oracle 数据库连接,采用如下形式: jdbc:oracle:thin:@localhost:1521:数据库名
对于 SQLServer 数据库连接,采用如下形式: jdbc:microsoft:sqlserver//localhost:1433;DatabaseName=sid
          对于 MySQL 数据库连接,采用如下形式: jdbc:mysql://localhost:3306/数据库名

数据库连接代码:

jdbc.properties
driverClass = com.mysql.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/company
user = root
password = 123456


/**
     * 数据库连接:
     *  1.将mysql的连接jar包复制到当前项目下,一定要jar包 mysql-connector-java-5.1.7-bin.jar
     *  2.右键bulid path
     *  3.连接---反射加载驱动类
     *       利用驱动管理器获取连接对象
     *
     *  利用反射加载类的时候需要类的全限定名称。
     *  mysql驱动类名: com.mysql.jdbc.Driver
     *  mysql url: jdbc:mysql://localhost:3306/数据库名
     *           协议    子协议    主机号  端口号
     *   这里为了方便直接将异常抛出,在实际应用中需要将异常处理,然后在finally中关闭流
     * @throws Exception
     */
    @Test
    public void ConTest() throws Exception{
         //Properties实际是一个map集合,键和值都是String型主要用于处理配置文件
         //将配置信息利用以 属性 = 值的形式保存在一个文件中&#x
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值