Java学习笔记——JDBC

JDBC是Java Database Connectivity的简称。
是由一组Java语言编写的类和接口组成,是一种用于执行SQL语句的规范。

JDBC中主要的类和接口

• Driver接口
• DriverManager类
• Connection类
• Statement类
• PreparedStatement类
• ResultSet类

Driver接口

每个JDBC数据库驱动程序都会提供Driver接口的具体实现
不同类型的JDBC数据库驱动程序在编程时的加载方法也不同。

  • JDBC驱动程序加载方法:
    – Class.forName(“jdbcdriver_classname”).newInstance();
    – 对于MySql数据库
    • jdbcdriver_classname=com.mysql.jdbc.Driver。
    – 对于SQLServer数据库
    – jdbcdriver_classname=com.microsoft.sqlserver.jdbc.SQLServerDriver
DriverManager

DriverManager是 JDBC 的管理层,管理一组JDBC驱动程序的基本服务。
DriverManager类的主要作用是跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接

  • 调用Class.forName() 方法将显式地加载驱动程序类。
  • 调用DriverManager.getConnection() 方法将建立与数据库的连接,得到与数据库连接的Connection对象。
    – 对于MySql数据库: DriverManager.getConnection(url, user, pwd)
    // 密码为空:”” 用户名默认为root
    url = jdbc:mysql://127.0.0.1:3306/ em?useUnicode=
    true&characterEncoding=UTF-8
    – 对于SQLServer数据库: DriverManager.getConnection(url)
    – url = jdbc:sqlserver://127.0.0.1:1368;databaseName=mydb;user=sa;password=123
    在url中指定用户名和密码
Connection

Connection类是JDBC规范中的最核心的类。
Statement对象和ResultSet对象等都直接或者间接的来源于它
Connection对象表示与特定数据库的连接(会话)。

  • 得到Statement对象
    • createStatement()
    • prepareStatement(String sql)
  • 为了保证数据库事务的原子性,Connection可以设置手动提交事务
Statement

Statement是向数据库提交SQL语句并返回相应结果的工具。语句可以是SQL查询、修改、插入或者删除。

  • PreparedStatement接口
    CallableStatement接口用于执行 SQL 存储过程的接口
    PreparedStatement
  • PreparedStatement类:是Statement的子接口
    用PreparedStatement类效率会更高。使用PreparedStatement有很多优势,总结如下:
    –防止SQL注入攻击(使用占位符“?”)。
    select * from table where user=”admin” and passwd=”123”
    等价于
    select * from table where user=? and passwd=?
    再给”?”赋值 setString(1,”admin”) setString(2,”123”)
  • 可以用来进行批处理
    – 提高SQL的执行性能(在执行之前有预处理)。
    – 避免使用SQL方言提高JDBC中有关SQL代码的可读性。
  • PreparedStatement实例要通过Connection对象调用prepareStatement(String sql) 方法获得。
  • PreparedStateme中常用的一些方法:
    – public ResultSetMetaData getMetaData()
    – public void setInt(int parameterIndex, int x)
    – public void setFloat(int parameterIndex, float x)
    – public void setString(int parameterIndex, String x)
    – public void setDate(int parameterIndex, Date x)
ResultSet

ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
ResultSet 对象具有指向其当前数据行的光标。

创建JDBC应用的步骤
  • 加载数据库的驱动程序(前提首先引入数据库驱动的jar包)
    – Class.forName(“driverName”);
  • 建立数据库连接
    – String connStr = “jdbc:<JDBC驱动程序名:端口号>:数据源”
    – Connection
    conn=DriverManager.getConnection(connStr);
  • 执行数据库操作SQL
    – Statement stmt = conn.createStatement();
    – ResultSet rs = stmt.executeQuery(sql);
    –除了查询语句是executeQuery();其他全部是executeUpdate();
  • 关闭数据库连接
    – conn.close();
    在这里插入图片描述
数据库连接池

通过JDBC访问数据库,每次访问都要经历与数据库建立连接,打开连接,访问数据库,关闭连接几个步骤,与数据库建立并打开连接是一件既费力又费时的工作,频繁的发生这种操作会严重耗费系统资源,导致系统性能下降,严重的会导致系统崩溃。
数据库连接池就是为了解决上面的问题而出现的。数据库连接池负责动态的分配、管理和释放数据库连接。
数据库连接池的原理
在这里插入图片描述

DataSource

DataSource用于提供到此 DataSource对象所表示的物理数据源的连接。
DataSource 接口由驱动程序供应商实现。共有三种类型的实现:

  • 基本实现
    生成标准的 Connection 对象
  • 连接池实现
    生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。
  • 分布式事务实现
    生成一个 Connection 对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值